Java如何在Fragment和适配器之间创建接口?
我有一个片段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
}
}
按下按钮时,我需要通知片段。如何调用此接口?
请帮助。
回答:
创建一个新的构造函数和一个实例变量:
AdapterInterface buttonListener;public MyListAdapter (Context context, Cursor c, int flags, AdapterInterface buttonListener)
{
super(context,c,flags);
this.buttonListener = buttonListener;
}
制作适配器时,将为实例变量提供适当的引用以进行保存。
要通过点击调用片段,请执行以下操作:
public void onClick(View v) { buttonListener.buttonPressed();
}
制作时Adapter
,您还必须将片段传递给适配器。例如
MyListAdapter adapter = new MyListAdapter (getActivity(), myCursor, myFlags, this);
因为this它将引用您的Fragment,现在是AdapterInterface
。
请记住,在片段更改的方向上,很可能会重新创建它。如果未重新创建适配器,则它可能会保留对不存在对象的引用,从而导致错误。
以上是 Java如何在Fragment和适配器之间创建接口? 的全部内容, 来源链接: utcz.com/qa/416439.html