【发布时间】:2016-08-02 04:56:01
【问题描述】:
我有一个 RecyclerView 列表。我正在尝试在 MainActivity 中设置一个 onItemLongClick 方法来启动一个 DialogFragment。该对话框将要求用户确认他们要删除 RecyclerView 列表中的项目。我想从适配器文件中捕获 RecyclerView 项目的位置,以便片段可以从 SQLite 数据库中删除正确的项目。
我正在尝试使用 setArguments 传递 Bundle 中的 RecyclerView 项目位置。 Android Studio 在“bundle.putInt”行发出以下错误:第二个参数类型错误。找到:“联系人”(我的数据模型),需要“int”。我在这里想念什么?
附言我还有一个“onItemClick”方法可以正确加载另一个名为“ActActivity”的活动,下面也显示了该活动以供参考。 onItemClick 和 onItemLongClick 都在 Adapter 文件中设置了 ClickListener 接口。两种点击方法都使用 Toasts 进行了测试,并且运行良好。
来自活动文件:
...
@Override
public void onItemLongClick(int position, View view) {
// For API >=14, use getFragmentManager() below.
Bundle bundle = new Bundle();
bundle.putInt("item position", **contactListAdapter.getItem(position)**); // error here.
android.app.FragmentManager fm = getFragmentManager();
fm.setArguments(bundle);
DeleteCardViewFragment delCardViewDialog = new DeleteCardViewFragment();
delCardViewDialog.show(fm,"delcardview dialog");
}
@Override
public void onItemClick(int position, View view) {
ActActivity.start(this, contactListAdapter.getItem(position));
}
来自 RecyclerView 的 Adapter 文件:
public class ContactListAdapter extends RecyclerView.Adapter<ContactListAdapter.ContactHolder>{
private List<Contact> contactList;
private Context context;
private RecyclerItemClickListener recyclerItemClickListener;
public ContactListAdapter(Context context) {
this.context = context;
this.contactList = new ArrayList<>();
...
**public Contact getItem(int position)** {
return contactList.get(position);
}
片段文件:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
...
Button btnOK = (Button) rootView.findViewById(R.id.btnOK);
btnOK.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// removeItem() here?
dismiss();
}
});
【问题讨论】:
-
但是你已经在
onItemLongClick(int position, View view)中有position作为第一个参数,所以使用它 -
只需将 'contactListAdapter.getItem(position)' 替换为 'position'?
-
从哪里设置列表 Fragment 或 Activity 中的数据??
-
如果你是从 Fragment 传递 recyclerview 中的数据列表,我建议你使用界面来完成你的任务
标签: android sqlite android-fragments android-recyclerview