我尝试从另一个类编辑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
。
答案 0 :(得分:0)
您不需要处理程序。您可以将接口传递给适配器,并在您的活动(您提到的其他类)中侦听接口,然后对textView进行更改。
public ContactsAdapter(Context context,ChangeVisibility
changeVisibility){
this.context = (MainActivity) context;
this.changeVisibility = changeVisibility;
}
然后将此接口传递给您的适配器
changeVisibility.change(true);
然后,当您单击适配器中的删除时,必须致电
{{1}}
然后在传递接口的另一个类中,您可以侦听change方法并根据需要设置可见性
答案 1 :(得分:0)
显然是您的视图为空。因此,您在错误的位置调用了findViewById,必须在创建该视图的上下文中调用该方法。
似乎视图不在您的上下文中(例如活动)。