片段中的 ListView 与 ListFragment
ListView in Fragment vs ListFragment
我正在尝试使用 ViewPager 在我拥有的几个片段之间实现一个滑动系统。我有 2 个片段和 1 个列表片段。我将如何使用这两种类型的片段填充 viewpager?或者在片段中实现 ListView 会更容易,所以我有 3 个片段?
对不起,我不够清楚。我有 3 个片段:2 个 classes 扩展 'Fragment' 而第三个扩展 'ListFragment'。在我的 ViewPagerActivity 中,当我将片段添加到列表时:
public class PageViewActivity extends FragmentActivity {
MyPageAdapter pageAdapter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
List<Fragment> fragments = getFragments();
pageAdapter = new MyPageAdapter(getSupportFragmentManager(), fragments);
ViewPager pager = (ViewPager)findViewById(R.id.viewpager);
pager.setAdapter(pageAdapter);
}
private List<Fragment> getFragments(){
List<Fragment> fList = new ArrayList<Fragment>();
fList.add(MainActivity.newInstance());
//fList.add(MainActivity.newInstance("Fragment 1"));
//fList.add(MyFragment.newInstance("Fragment 2"));
//fList.add(MyFragment.newInstance("Fragment 3"));
return fList;
}
}
我在以下行收到错误:
fList.add(MainActivity.newInstance());
哪个是我的 ListFragment class(我知道 MainActivity 会抛出它,但它是我的 ListFragment class)。我的列表片段 class:
public class MainActivity extends ListFragment {
private List<ListViewItem> mItems;
public static MainActivity newInstance()
{
MainActivity f = new MainActivity();
Bundle bdl = new Bundle(1);
f.setArguments(bdl);
return f;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(R.layout.activity_main);
mItems = new ArrayList<ListViewItem>();
Resources resources = getResources();
setListAdapter(new ListViewAdapter(getActivity(), mItems));
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
// remove the dividers from the ListView of the ListFragment
getListView().setDivider(null);
}
}
基本上,它给我一个错误,因为我传入了 ListFragment 的 newInstance,但 List 类型是 Fragments。我不认为应该有问题,因为 ListFragment 是 Fragment.
的子class
错误:无法将列表中的添加(android.support.v4.app.Fragment)应用于/MainActivity
这就是为什么我不确定是否应该使用片段+列表视图来克服这个错误。
ViewPager 实际上并不关心片段的类型,即使是寻呼机适配器也不关心片段是否扩展 Fragment
,ListFragment
当然会。
也许您的片段来自支持库,但 ViewPager 需要标准片段
我正在尝试使用 ViewPager 在我拥有的几个片段之间实现一个滑动系统。我有 2 个片段和 1 个列表片段。我将如何使用这两种类型的片段填充 viewpager?或者在片段中实现 ListView 会更容易,所以我有 3 个片段?
对不起,我不够清楚。我有 3 个片段:2 个 classes 扩展 'Fragment' 而第三个扩展 'ListFragment'。在我的 ViewPagerActivity 中,当我将片段添加到列表时:
public class PageViewActivity extends FragmentActivity {
MyPageAdapter pageAdapter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
List<Fragment> fragments = getFragments();
pageAdapter = new MyPageAdapter(getSupportFragmentManager(), fragments);
ViewPager pager = (ViewPager)findViewById(R.id.viewpager);
pager.setAdapter(pageAdapter);
}
private List<Fragment> getFragments(){
List<Fragment> fList = new ArrayList<Fragment>();
fList.add(MainActivity.newInstance());
//fList.add(MainActivity.newInstance("Fragment 1"));
//fList.add(MyFragment.newInstance("Fragment 2"));
//fList.add(MyFragment.newInstance("Fragment 3"));
return fList;
}
}
我在以下行收到错误:
fList.add(MainActivity.newInstance());
哪个是我的 ListFragment class(我知道 MainActivity 会抛出它,但它是我的 ListFragment class)。我的列表片段 class:
public class MainActivity extends ListFragment {
private List<ListViewItem> mItems;
public static MainActivity newInstance()
{
MainActivity f = new MainActivity();
Bundle bdl = new Bundle(1);
f.setArguments(bdl);
return f;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(R.layout.activity_main);
mItems = new ArrayList<ListViewItem>();
Resources resources = getResources();
setListAdapter(new ListViewAdapter(getActivity(), mItems));
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
// remove the dividers from the ListView of the ListFragment
getListView().setDivider(null);
}
}
基本上,它给我一个错误,因为我传入了 ListFragment 的 newInstance,但 List 类型是 Fragments。我不认为应该有问题,因为 ListFragment 是 Fragment.
的子class错误:无法将列表中的添加(android.support.v4.app.Fragment)应用于/MainActivity
这就是为什么我不确定是否应该使用片段+列表视图来克服这个错误。
ViewPager 实际上并不关心片段的类型,即使是寻呼机适配器也不关心片段是否扩展 Fragment
,ListFragment
当然会。
也许您的片段来自支持库,但 ViewPager 需要标准片段