-2

I have a problem in updating textview in activity class whenever recyclerview item is deleted from it. getActivity() is not available here. Thanx in advance guys.

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

            }
        });
    }
}

2 Answers2

1

There can be different ways to implement this. Below are some.

  1. Use interface callbacks, which will be passed in constructor of that Adapter class. (Best for your requirement.)
  2. Pass activity reference in Adapter class, and call activity method to update textview. Like activity.updateText();
  3. You can use EventBus. That can communicate in all over your app.
Khemraj Sharma
  • 57,232
  • 27
  • 203
  • 212
0
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);
    }
}
Khaled Lela
  • 7,831
  • 6
  • 45
  • 73