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

回到顶部