从另一个片段填充Listview

时间:2012-07-27 18:50:05

标签: android listview arraylist android-fragments

我正在尝试制作带标签的Android应用。两个选项卡都是列表视图。第一个标签从RSS Feed中获取帖子。第二个选项卡将它们组织成类别。

问题是我想从第一个标签的片段填充第二个标签中的列表视图。

第一个片段的代码是:

public class PostsFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.posts_fragment, container, false);
    return view;
}

...
...
...

// Populate the "posts_fragment.xml" with Posts 
public void populate_postview() {
    ListView lv1;

    lv1 = (ListView)getView().findViewById(R.id.postlist);
    lv1.setAdapter(new ArrayAdapter<String>(getActivity(),android.R.layout.simple_list_item_1 , arrays.PsychoTitle));
    lv1.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
            ...             
        }
    });

// Populate the "categories_fragment.xml" with Categories
public void populate_catview() {
    ListView lv2;

    lv2 = (ListView)getView().findViewById(R.id.catList);
    lv2.setAdapter(new ArrayAdapter<String>(getActivity(),android.R.layout.simple_list_item_1 , arrays.PsychoCategories));
}

此处的问题是catList中的populate_catview()是“categories_fragment.xml”的一部分,但使用getView()会返回当前布局“posts_fragment.xml”。

那么如何在第二个片段中填充项目列表?

2 个答案:

答案 0 :(得分:1)

在这里查看我的答案Call functions of Activities Belonging to a Fragment它足以说明问题。您不应该直接调用另一个片段的方法。片段应该是自包含的。创建活动的接口,然后使用第二个片段中的数据调用方法。

答案 1 :(得分:1)

假设两个片段具有相同的父活动,一种解决方案是将支持列表的数据保存在父活动中。然后,当用户点击任一选项卡时,相应的片段将检索数据并相应地填充列表。