每当从活动类中删除recyclerview
项时,我在更新textview
时遇到问题。getActivity()
在此处不可用。提前感谢伙计们。
public class ViewHolder extends RecyclerView.ViewHolder {
ImageView delete_from_cart;
public ViewHolder(final View itemView) {
super(itemView);
delete_from_cart.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// here I want to change the textview
DatabaseHelper dh = new DatabaseHelper(context);
dh.deleteCartDetail(product_name.getText().toString());
delete(getLayoutPosition());
}
});
}
}
可以有不同的方法来实现这一点。下面是一些。
- 使用接口回调,该回调将在Adapter类的构造函数中传递。(最符合您的要求。(
- 在
Adapter
类中传递活动引用,并调用activity方法来更新textview。类似activity.updateText()
- 您可以使用EventBus。它可以在你的应用程序中进行通信
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder>{
public interface MyCallback{
public void updateText(String text);
}
final private MyCallback callback;
public MyAdapter(MyCallback callback){
this.callback = callback;
}
... Some Other code
delete_from_cart.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// Do other stuff
callback.updateText("some text");
}
});
}
public class MyActivity extends Activity implements MyCallback{
@Override
public void updateText(String someText){
myTextView.setText(someText);
}
}