如何使用Handler从其他类编辑TextView?

时间:2019-01-04 19:01:28

标签: java android

我尝试从另一个类编辑TextViews。

这是一个RecyclerView适配器。当我单击“删除”时,服务器将被删除。另外,某些按钮和文本也应该在用户界面上不可见。

protected MainActivity context;

public ContactsAdapter(Context context){
    this.context = (MainActivity) context;
}

public void onBindViewHolder(ContactsAdapter.ViewHolder viewHolder,final int position) {

...

final Handler mHandler = new Handler();

new Thread(new Runnable() {
@Override
public void run () {

mHandler.post(new Runnable() {
@Override
public void run () {
TextView commandrun = (TextView) context.findViewById(R.id.command_run);         
commandrun.setVisibility(View.INVISIBLE);
}
});
}
}).start();

实际上我得到了java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View com.minvercraft.minvercraftfree.MainActivity.findViewById(int)' on a null object reference

2 个答案:

答案 0 :(得分:0)

您不需要处理程序。您可以将接口传递给适配器,并在您的活动(您提到的其他类)中侦听接口,然后对textView进行更改。

public ContactsAdapter(Context context,ChangeVisibility 
changeVisibility){
this.context = (MainActivity) context;
this.changeVisibility = changeVisibility;
}

然后将此接口传递给您的适配器

changeVisibility.change(true);

然后,当您单击适配器中的删除时,必须致电

{{1}}

然后在传递接口的另一个类中,您可以侦听change方法并根据需要设置可见性

答案 1 :(得分:0)

显然是您的视图为空。因此,您在错误的位置调用了findViewById,必须在创建该视图的上下文中调用该方法。

似乎视图不在您的上下文中(例如活动)。