将数据从 RecyclerView 传递到 Fragment
Passing data from a RecyclerView to Fragment
我目前正在创建一个应用程序,它包含一个片段、一个用于 RecyclerView 的适配器和一个通过片段访问的 RecyclerView。我需要将数据从 RecyclerView 传递回片段,但是我无法这样做,因为未通过 Intent 识别片段。当用户从 RecyclerView 选择一个项目时,这个项目应该被传递到片段。我有 RecyclerView 使用 onBackPressed()
导航回工作正常的片段。但是,似乎没有数据通过。请在下面查看我目前在 onItemClick
:
中的内容
@Override
public void onItemClick(View view, int position) {
// Need to pass data through to Fragment, however unable to do so as it's not identified
// within the Intent
onBackPressed();
}
如果你想将数据传递给你的片段,那么我认为你应该在你的 RecyclerViewAdapter 中做一个 OnItemClickListener 接口并让你的片段实现它。 Fragement 应该将自己注册到 RecyclerViewAdapter 中的 onItemClickListeners。然后你应该能够将你的片段传递给点击的项目。
这会进入您的 RecyclerViewAdapter 的 class:
class RecyclerViewAdapter{
//...
interface OnItemClickListener {
void onItemClick(Item item); //replace the item with whatever you want to pass to the fragment
}
List<OnItemClickListener> onItemClickListeners = new ArrayList<>();
public void addOnItemClickListener(OnItemClickListener listener){
onItemClickListeners.add(listener);
}
@Override
public void onItemClick(View view, int position) {
for(OnItemClickListener listener : onItemClickListeners) {
listener.onClick(item);
}
onBackPressed();
}
//...
}
这会进入您的 Fragment 的 class:
class Fragment implements RecyclerViewAdapter.OnItemClickListener {
//...
//Somewhere in your fragment where you create your RecyclerViewAdapter
recyclerViewAdapter.addOnItemClickListener(this);
//...
@Override
public void onItemClick(Item item) {
//now data is passed to your Fragment
}
}
希望这有助于解决您遇到的问题。
我目前正在创建一个应用程序,它包含一个片段、一个用于 RecyclerView 的适配器和一个通过片段访问的 RecyclerView。我需要将数据从 RecyclerView 传递回片段,但是我无法这样做,因为未通过 Intent 识别片段。当用户从 RecyclerView 选择一个项目时,这个项目应该被传递到片段。我有 RecyclerView 使用 onBackPressed()
导航回工作正常的片段。但是,似乎没有数据通过。请在下面查看我目前在 onItemClick
:
@Override
public void onItemClick(View view, int position) {
// Need to pass data through to Fragment, however unable to do so as it's not identified
// within the Intent
onBackPressed();
}
如果你想将数据传递给你的片段,那么我认为你应该在你的 RecyclerViewAdapter 中做一个 OnItemClickListener 接口并让你的片段实现它。 Fragement 应该将自己注册到 RecyclerViewAdapter 中的 onItemClickListeners。然后你应该能够将你的片段传递给点击的项目。
这会进入您的 RecyclerViewAdapter 的 class:
class RecyclerViewAdapter{
//...
interface OnItemClickListener {
void onItemClick(Item item); //replace the item with whatever you want to pass to the fragment
}
List<OnItemClickListener> onItemClickListeners = new ArrayList<>();
public void addOnItemClickListener(OnItemClickListener listener){
onItemClickListeners.add(listener);
}
@Override
public void onItemClick(View view, int position) {
for(OnItemClickListener listener : onItemClickListeners) {
listener.onClick(item);
}
onBackPressed();
}
//...
}
这会进入您的 Fragment 的 class:
class Fragment implements RecyclerViewAdapter.OnItemClickListener {
//...
//Somewhere in your fragment where you create your RecyclerViewAdapter
recyclerViewAdapter.addOnItemClickListener(this);
//...
@Override
public void onItemClick(Item item) {
//now data is passed to your Fragment
}
}
希望这有助于解决您遇到的问题。