为了账号安全,请及时绑定邮箱和手机立即绑定

如何在片段和适配器之间创建接口?

如何在片段和适配器之间创建接口?

凤凰求蛊 2019-07-20 10:01:06
如何在片段和适配器之间创建接口?我有碎片ListView,说MyListFragment,以及习俗CursorAdapter..我正在设置onClickListener在此适配器中,用于列表行中的按钮。public class MyListAdapter extends CursorAdapter {     public interface AdapterInterface {         public void buttonPressed();     }     ...     @Override     public void bindView(final View view, final Context context, final Cursor cursor) {         ViewHolder holder = (ViewHolder) view.getTag();         ...         holder.button.setOnClickListener(new OnClickListener() {             @Override             public void onClick(View v) {                 // some action                 // need to notify MyListFragment             }         });     }}public MyListFragment extends Fragment implements AdapterInterface {     @Override     public void buttonPressed() {         // some action     }}我需要在按下按钮时通知片段。如何调用这个接口?救命求你了。
查看完整描述

3 回答

?
慕的地10843

TA贡献1785条经验 获得超8个赞

创建一个新的构造函数和一个实例变量:

AdapterInterface buttonListener;public MyListAdapter (Context context, Cursor c, int flags, AdapterInterface buttonListener){
  super(context,c,flags);
  this.buttonListener = buttonListener;}

当Adapter被创建时,实例变量将被赋予适当的引用来保持。

若要从单击中调用片段,请执行以下操作:

public void onClick(View v) {
   buttonListener.buttonPressed();}

在制作Adapter,您还必须将片段传递给Adapter。例如

MyListAdapter adapter = new MyListAdapter (getActivity(), myCursor, myFlags, this);

this将引用您的片段,它现在是一个AdapterInterface.

请记住,在更改片段的方向时,很可能会重新创建它。如果没有重新创建Adapter,它可能会保留对不存在的对象的引用,从而导致错误。


查看完整回答
反对 回复 2019-07-20
  • 3 回答
  • 0 关注
  • 336 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信