从适配器实现活动中复选框的onClick监听器



我需要在适配器中为复选框clickListener创建一个接口,以便我可以在片段中实现它。

下面的代码在myadapter中,我需要将逻辑移动到使用适配器

的Fragment中的clickListener中
holder.ivLike.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        if (!isLike) {
            like(postsData.getNews_id());
            realmResults.get(position).setChecked(true);
            holder.tvNewsCountLike.setText("" + (Integer.parseInt(holder.tvNewsCountLike.getText().toString()) + 1));
            holder.ivLike.setChecked(true);
            isLike = true;
        } else {
            unlike(postsData.getNews_id());
            holder.tvNewsCountLike.setText("" + (Integer.parseInt(holder.tvNewsCountLike.getText().toString()) - 1));
            holder.ivLike.setChecked(false);
            isLike = false;
        }
    }
});

你可以在这里使用接口回调。

,

public class MyAdapter {
private MyListener mListener;

public void setListener(MyListener listener){
  mListene r= listener;
}

 //where ever you want to call back
 if(mListener != null){
  mListener.onNotify();
}
public interface MyListener{
 void onNotify();
}
}
活动/Fargment

 public class MyActivity extends Activity implements MyAdapter.MyListener{
    myAdapter.setListener(this);
    @Override
    public void onNotify(){
      //do your logic here
    }
}

在您的适配器中,声明以下内容作为您的Listener接口:

public class FooAdapter extends RecyclerView.Adapter<ViewHolder> {
    public interface Listener {
        void onItemClicked(); // Customize to your needs
    }
    private final List<Listener> listeners = new ArrayList<>();
    public void addListener(Listener l) {
        listeners.add(l);
    }
    // In your viewholder:
    holder.ivLike.setOnClickListener(new View.OnClickListener() {
        @Override public void onClick(View v) {
            for(Listener l : listeners) l.onItemClicked();
        }
    });
}
现在,在您的片段中,实现侦听器并侦听适配器:
public class FooFragment extends Fragment implements FooAdapter.Listener {
    // In onCreate()
        ...
        FooAdapter adapter = new FooAdapter();
        adapter.addListener(this);
        ...
    @Override public void onItemClicked() {
        // Add your logic here.
    }
}

最新更新