0

I have a childfragment which has -

private FavouriteMessageListener favouriteMessageListener;

msgListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                FavouriteMessageWrapper favouriteMessage =  favourites.get(position);
                String favoriteMessage = favouriteMessage.getText();
                //Need to notify the interface about it
                favouriteMessageListener.favouriteMessageString(favoriteMessage);
                }
            });

My Interface

public interface FavouriteMessageListener {
     void favouriteMessageString(String favouriteMessage);
}

My MainFragment

@Override
    public void favouriteMessageString(String favouriteMessage) {

    }

Why my favouriteMessageListener is null? What is wrong with my implementation... I just need to get the value of string in MainFragment using this interface. How do I do?

1 Answers1

0

Try this

In your adapter

 // Define listener member variable
private static OnItemClickListener listener;
// Define the listener interface
public interface OnItemClickListener {
    void onItemClick(View itemView, int position, String favoriteMessaage);
}
// Define the method that allows the parent activity or fragment to define the listener
public void setOnItemClickListener(OnItemClickListener listener) {
    this.listener = listener;
}

In your adapters ViewHolder:

plus.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                if (listener != null)
                    listener.onItemClick(v, k, favoriteMessage);
            }
        });

In your Fragment:

adapter.setOnItemClickListener(new MenuListCustomAdapter.OnItemClickListener() {
        @Override
        public void onItemClick(View view, int position, String favoriteMessage) {


              // you can get your String here
              //you can check which view was clicked
               if(view.getId() == R.id.viewID){

                 //do your stuff here
               }
      }
    });
Vygintas B
  • 1,624
  • 13
  • 31