我需要帮助,所以我有一个片段,它有一个RecycleView
,在RecycleView
里面有一个按钮。
单击后的按钮必须打开已经在基本片段中声明的对话框,所以我只调用like openDialog(DIALOG_CHECK);
现在如何在适配器上调用该对话框我已经在片段中创建了一个方法,并从适配器中调用它,并生成错误"Java lang null pointer“
这是我的代码:
DeliveryFragment delivFrag = new DeliveryFragment();
holder.editButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
delivFrag.doEdit();
}
});
并在片段中
public void doEdit(){
openDialog(DIALOG_EDIT_ITEM);
}
发布于 2016-04-01 13:18:32
为了更好地理解,这只是一个简单的例子。使用接口。
public class TestAdapter extends RecyclerView.Adapter<TestAdapter.ViewHolder> {
private static OnItemClickListener mOnItemClickLister;
public interface OnItemClickListener {
void onItemClicked(View view, int pos);
}
public void setOnItemClickListener(OnItemClickListener listener) {
mOnItemClickLister = listener;
}
public static class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
Button mBtnTest;
Context mContext;
//We also create a constructor that accepts the entire item row
//and does the view lookups to find each subview.
public ViewHolder(Context context, View itemView) {
//Stores the itemView in a public final member variable that can be used
//to access the context from any ViewHolder Instance
super(itemView);
mContext = context;
mBtnTest = (Button) itemView.findViewById(R.id.message_button);
itemView.setOnClickListener(this);
}
@Override public void onClick(View v) {
int position = v.getLayoutDirection();
mOnItemClickLister.onItemClicked(v, position);
}
}
}
片段部分
class FragmentTest extends Fragment implements OnItemClickListener {
TestAdapter adapter = new TestAdapter(); //you can initialize according to your logic
//set the fragment as a listener to adapter
this.adapter.setOnItemClickListener(onItemClickListener);
public void onItemClicked(View view, int pos) {
//do whatever you want here...
}
}
发布于 2016-04-01 12:51:50
您必须在adapter类中编写一个接口,并在调用适配器的片段中实现该功能。
以下是带有项目单击操作的回收器视图的示例应用程序。检查一次,它可能会对你有用。https://www.dropbox.com/s/2q1ywnehz454axw/SamplePro_Recycler.zip?dl=0
发布于 2016-10-12 15:17:52
您可以将片段实例发送到Adapter的构造函数,然后可以使用此实例调用该片段中的方法。
public MyCartRecycleAdapter(Context context, List<CartData> list, MyFragmentNew myFragmentNew) {
this.list = list;
this.mContext = (Activity) context;
this.myFragmentNew = myFragmentNew;
}
然后
myFragmentNew.MethodName();
https://stackoverflow.com/questions/36347429
复制相似问题