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");