0

抱歉,我是 Android 新手。我正在尝试以编程方式将多个列表片段添加到单个活动中,但是当我这样做时,只显示一个。如何在单个操作中显示多个列表?

最终目标是从 API 读取一组数据并将其分类到我的应用程序中的多个列表中。我希望数据是水平滚动的列表片段,但由于这是一个额外的复杂性,我从简单的 ListFragments 开始。我的代码如下所示:

活动片段.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:id="@+id/fragmentContainer"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  />

项目活动:

public class ItemActivity extends FragmentActivity
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_fragment);
        FragmentManager manager = getSupportFragmentManager();

        ItemListFragment fragment1 = new ItemListFragment();
        FragmentTransaction transaction = manager.beginTransaction();
        transaction.add(R.id.fragmentContainer, fragment1);        
        ItemListFragment fragment2 = new ItemListFragment();
        transaction.add(R.id.fragmentContainer, fragment2);
        transaction.commit();

    }
}

项目列表片段:

public class ItemListFragment extends ListFragment {    
    List<String> items = new ArrayList<String>();
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        items.add("One");
        items.add("Two");
        items.add("Three");
        ArrayAdapter<String> adapter = 
            new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, items);
        setListAdapter(adapter);
    }
}
4

2 回答 2

1

如果您想要多个列表合二为一Activity,我通常会这样做:

  1. 因为每个ListView都使用独立的滚动视图,所以我通常为我拥有的每个 ListView 拆分屏幕。示例:使用 2 ListViewi 将屏幕的高度拆分为 50/50,因此每个屏幕ListView都有 50% 的部分。
  2. 如果我必须动态添加ListView到屏幕上,我使用cwac 合并适配器来合并适配器并在单个中显示ListView
  3. 您可以使用另一种替代方法ViewPager来显示ListFragment. 这将实现您想要的,即在单个活动中具有多个列表视图。
于 2013-09-18T18:24:56.750 回答
0

你为什么不这样做呢?

FragmentManager fragmentManager = getFragmentManager ();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction ();
// work here to change Activity fragments (add, remove, etc.).  Example here of adding.
fragmentTransaction.add (R.id.myFrame, myFrag);
fragmentTransaction.commit ()

我找到了这段代码,所以只显示一个,提交代码中的每个事务。

    FragmentManager manager = getSupportFragmentManager();

    ItemListFragment fragment1 = new ItemListFragment();
    FragmentTransaction transaction = manager.beginTransaction();
    transaction.add(R.id.fragmentContainer, fragment1).commit();
    transaction = manager.beginTransaction(); // might be unnescessary
    ItemListFragment fragment2 = new ItemListFragment();
    transaction.add(R.id.fragmentContainer, fragment2).commit();

如果这引发某种错误,您可能需要启动另一个事务以添加第二个片段。

于 2013-09-18T18:05:50.450 回答