Android 如何从片段';s recyclerview ViewHolder类

Android 如何从片段';s recyclerview ViewHolder类,android,android-recyclerview,Android,Android Recyclerview,每当从活动类中删除recyclerview项时,我在更新活动类中的textview时遇到问题getActivity()在此处不可用。先发制人,伙计们 public class ViewHolder extends RecyclerView.ViewHolder { ImageView delete_from_cart; public ViewHolder(final View itemView) { super(itemView); dele

每当从活动类中删除
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());

            }
        });
    }
}

可以有不同的方法来实现这一点。下面是一些

  • 使用,它将在该适配器类的构造函数中传递。(最符合您的要求。
  • 适配器
    类中传递活动引用,并调用活动方法来更新textview。比如
    activity.updateText()
  • 您可以使用。它可以在你的所有应用程序中进行通信 公共类MyAdapter扩展了RecyclerView.Adapter{ 公共接口MyCallback{ 公共void updateText(字符串文本); } 最终私有MyCallback回调; 公共MyAdapter(MyCallback回调){ this.callback=回调; } …其他代码 从_cart.setOnClickListener(new View.OnClickListener()中删除_{ @凌驾 公共void onClick(视图){ //做其他事情 updateText(“某些文本”); } }); } 公共类MyActivity扩展活动实现MyCallback{ @凌驾 public void updateText(字符串someText){ myTextView.setText(someText); } }
    请尝试interface/broadcastreceiver/eventbus,然后单击ActivityGetLayoutPosition()>>getAdapterPosition()的回调,通过适配器构造函数传递
    context
    referent。@KhaledLela不使用上下文。请检查我的答案,其中显示了如何使用@Khermraj answer提到的回调更新活动。
    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);
        }
    }