我需要帮助了解以下场景的工作原理以及如何实现结果。
我有一个名为ShoppingCart
的班级。
它有一个名为addItemsToShoppingCartFromPreviousOrder
的方法。
现在我有一个名为PreviousOrderFragment
的片段,其onCreateView
方法正在使用RecyclerView
。它是以前订单的清单。
我有多个列表。现在我想知道如何将addItemsToShoppingCartFromPreviousOrder
方法从ShoppingCart
调用到我的片段中。
这样当用户点击列表时,它就会添加到购物车中。
答案 0 :(得分:1)
你需要这样做:
在你的RecycleView适配器中放置:
<activity>
项目=所选项目
...他们 在适配器的ViewHolder中输入:
private ItemListener mListener;
...
public void setmListener(ItemListener mListener) {
this.mListener = mListener;
}
...
public interface ItemListener {
void onItemSelected(Item item);
}
OBS:ViewHolder是适配器的InnerClass
他们所需要做的就是:
在你的片段中
public class Holder extends RecyclerView.ViewHolder implements View.OnClickListener {
public TextView tv_id;
public TextView tv_url;
public TextView tv_login;
public Holder (View itemView) {
super(itemView);
tv_id = (TextView) itemView.findViewById(R.id.tv_id);
tv_url = (TextView) itemView.findViewById(R.id.tv_url);
tv_login = (TextView) itemView.findViewById(R.id.tv_login);
itemView.setOnClickListener(this);
}
@Override
public void onClick(View v) {
if (mListener != null) {
Integer position = Integer.valueOf(getLayoutPosition());
mListener.onUserSelected(mList.get(position));
}
}
}
他们制作你的片段:
mRecycleViewAdapter.setmListener(this)
并覆盖:
public class MyFragment extends Fragment implements MyRecycleViewAdapter.ItemListener
Here就是一个例子, 请参阅SearchFragment.java和UsersListAdapter.java
答案 1 :(得分:0)
1-为ex创建一个接口调用它。 OnItemClicked
Interface OnItemClick{
void onItemClicked(/*pass your selected object*/);
}
2-使片段实现此接口
Class PreviousOrderFragment extends Fragment implements OnItemClicked{
void onItemClicked(/*pass your selected object*/){
/** here you have the select object when item clicked from the activity **/
addItemsToShoppingCartFromPreviousOrder();
}
}
3-从活动
中的片段中获取实例Class YOUR_Activity extends Activity {
PreviousOrderFragment fragment = new PreviousOrderFragment ();
/// in the onClick event
public onClick(View v){
fragment.onItemClicked(/**pass the selected object*/);
}
}
答案 2 :(得分:0)
参见this answer,已经解释了在片段之间进行通信的所有可能方法。
但是,当您在多个活动和碎片之间进行复杂的沟通时,一个好方法是使用 EventBus ,它非常简单快捷,而且比任何一个更好这在上面的相关答案中有描述。