我想点击片段A中listitems中的特定按钮,然后特定项目应反映到片段B中。
当我点击特定项目的特定按钮时,该项目应该反映在片段B中。 当我点击ram前面的按钮时,ram应该反映在片段B
中当我点击Holly前面的按钮时,Holly应该反映在片段B中。 为此,我该怎么办?
这是我的代码:
A类
public class A extends ListFragment {
ViewHolder viewHolder;
Context mContext;
ArrayList<HashMap<String, String>> list;
SimpleAdapter adapter;
String[] names = new String[] { "Ram", "Abhi", "Rohit", "Holly", "James",
"Hana", "Jack", "Ram" };
Integer[] imageId = new Integer[] { R.drawable.ic_launcher,
R.drawable.ic_launcher, R.drawable.ic_launcher,
R.drawable.ic_launcher, R.drawable.ic_launcher,
R.drawable.ic_launcher, R.drawable.ic_launcher,
R.drawable.ic_launcher,
};
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
List<HashMap<String, String>> aList = new ArrayList<HashMap<String, String>>();
for (int i = 0; i < names.length; i++) {
HashMap<String, String> hm = new HashMap<String, String>();
hm.put("txt", " " + names[i]);
hm.put("flag", Integer.toString(imageId[i]));
aList.add(hm);
}
String[] from = { "flag", "txt" };
int[] to = { R.id.flag, R.id.txt };
SimpleAdapter adapter = new SimpleAdapter(getActivity()
.getBaseContext(), aList, R.layout.listitems, from, to);
setListAdapter(adapter);
return super.onCreateView(inflater, container, savedInstanceState);
}
}
B类
public class B extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View V = inflater.inflate(R.layout.b, container, false);
return V;
}
}
答案 0 :(得分:1)
您可以使用EventBus。
单击片段-A中的按钮,发布事件。
现在Fragment-B正在收听该事件,所以每当你发布事件时,Fragment-B都会收到通知。
示例强>
相关性:
如果您正在使用eclipse,请从here下载jar文件如果您使用的是Android Studio,则添加依赖项
compile 'de.greenrobot:eventbus:2.4.0'
定义事件:
public class MessageEvent {
private final int position;
/* Additional fields if needed */
public MessageEvent(int position) {
this.position = position;
}
public int getPosition() {
return position;
}
}
准备订阅者:
您获得事件通知的片段。
public class FragmentB extends Fragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
EventBus.getDefault().register(this);
}
@Override
public void onDestroy() {
super.onDestroy();
EventBus.getDefault().unregister(this);
}
public void onEventMainThread(MessageEvent event) {
// put your code here for update list item
event.getPosition();
// you can also add extra other field in MessageEvent
}
}
发布活动:
在你想要通知的片段-A中
EventBus.getDefault().post(new MessageEvent(ITEM_POSITION));
答案 1 :(得分:0)
处理片段A上的listview的setOnItemClickListener,并将该值作为附加内容传递给片段B。
答案 2 :(得分:0)
在Fragment A中添加一个接口并在Fragment B中实现该接口。根据回调方法中传递的值,在Fragment B中进行适当的更改。