道歉,因为我是Android新手。我正在尝试以编程方式将多个列表片段添加到单个活动中,但是当我这样做时,只显示一个。如何在一个操作中显示多个列表?
最终目标是从API读取一组数据并将其分类到我的应用程序中的多个列表中。我希望数据是水平滚动列表片段,但由于这是一个额外的复杂性,我开始使用简单的ListFragments。我的代码如下所示:
activity_fragment.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"
/>
ItemActivity:
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();
}
}
ItemListFragment:
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);
}
}
答案 0 :(得分:1)
如果你想在一个Activity
中有多个列表,这就是我通常做的事情:
ListView
都使用独立的滚动视图,所以我通常会为每个ListView分割屏幕。示例:使用2 ListView
我将屏幕高度分成50/50,因此每ListView
个屏幕占50%。ListView
到屏幕,我会使用cwac merge adapter合并适配器并将其显示在一个ListView
ViewPager
来显示ListFragment
。这将实现您的目标,即在单个活动中拥有多个列表视图。答案 1 :(得分: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();
如果这会引发某种错误,您可能需要启动另一个事务来添加第二个片段。