0

我想通過膨脹textview的佈局來設置TextTextText從一個非活動類的新值,但我仍然不成功,雖然我能夠getText電視機的當前價值。這裏是代碼:更改來自非活動類的TextView值

LayoutInflater mInflater = (LayoutInflater) mContext.getSystemService(mContext.LAYOUT_INFLATER_SERVICE); 
View view = mInflater.inflate(R.layout.target_details, null); 

TextView val = (TextView) view.findViewById(R.id.val); 

不知道我是否正確地做。

更新: 我用Kay的答案添加了下面的代碼。它正在工作。

((Activity)mContext).runOnUiThread(new Runnable(){ 
     @Override 
     public void run(){ 
      //settext here 
     } 
    }); 
+0

如何活動和相關的類。 –

回答

2

在適配器/非活動類中創建新對象並不是一個好主意。 Activity中必須已經有一個TextView類的對象。

如果需要更改與其他類的文字,你可以做的TextView在活動的靜態和適配器訪問它像

活動: -

Static TextView val = (TextView) view.findViewById(R.id.val); 

適配器: -

MyActivity.val.setText("some txt"); 
+0

不起作用。儘管我能夠獲得文本。但setText不起作用。 – user3360031

+0

謝謝!!!!!!!!!!!!!!!!!!!! –

3

您想爲TextView設置來自非活動類的文本

Yo你可以用兩種方法做到這一點。
1.在啓動您的非活動類時傳遞您的活動,並在將文本設置爲TextView時使用該活動。

public class YourClass(){ 
    Activity a; 
    public YourClass(Activity activity){ 
      this.a=activity; 
    } 
} 

2.You可以在活動傳遞給將設置文本

public static void displayText(Activity activity, int id, String text) { 
    TextView tv = (TextView) activity.findViewById(id); 
    tv.setText(text); 
} 

防爆方法:displayText(YourActivity.this,R.id.your_text_view,"Text you want to display");