我需要在适配器中为复选框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.
}
}