Android 如何使用视图寻呼机实现列表视图和其他片段?
我正在尝试将视图寻呼机与ListView和其他片段一起使用。列表视图将用作菜单,而其他片段只显示文本 我已经设法用TextView制作了ViewPager,但我就是不知道如何实现列表视图片段。我试图在网上找到一些例子,但我找不到我需要的 这就是我现在所拥有的 这是正课Android 如何使用视图寻呼机实现列表视图和其他片段?,android,listview,android-fragments,android-viewpager,Android,Listview,Android Fragments,Android Viewpager,我正在尝试将视图寻呼机与ListView和其他片段一起使用。列表视图将用作菜单,而其他片段只显示文本 我已经设法用TextView制作了ViewPager,但我就是不知道如何实现列表视图片段。我试图在网上找到一些例子,但我找不到我需要的 这就是我现在所拥有的 这是正课 public class MainActivity extends FragmentActivity { MyPageAdapter pageAdapter; List<Fragment>fragments;
public class MainActivity extends FragmentActivity {
MyPageAdapter pageAdapter;
List<Fragment>fragments;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
fragments = new Vector<Fragment>();
fragments.add(Fragment.instantiate(this, MyFragment.class.getName()));
fragments.add(Fragment.instantiate(this, FragmentB.class.getName()));
pageAdapter = new MyPageAdapter(getSupportFragmentManager(), fragments);
ViewPager pager = (ViewPager) findViewById(R.id.viewpager);
pager.setAdapter(pageAdapter);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
private class MyPageAdapter extends FragmentPagerAdapter {
private List<Fragment> fragments;
public MyPageAdapter(FragmentManager fm, List<Fragment> fragments) {
super(fm);
this.fragments = fragments;
}
@Override
public Fragment getItem(int position) {
return this.fragments.get(position);
}
@Override
public int getCount() {
return this.fragments.size();
}
}
public类MainActivity扩展了FragmentActivity{
MyPageAdapter-pageAdapter;
列表片段;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
片段=新向量();
add(Fragment.instantiate(this,MyFragment.class.getName());
add(Fragment.instantiate(这是FragmentB.class.getName());
pageAdapter=新的MyPageAdapter(getSupportFragmentManager(),片段);
ViewPager pager=(ViewPager)findViewById(R.id.ViewPager);
寻呼机设置适配器(pageAdapter);
}
@凌驾
公共布尔onCreateOptions菜单(菜单){
//为菜单充气;这会将项目添加到操作栏(如果存在)。
getMenuInflater().充气(R.menu.main,menu);
返回true;
}
私有类MyPageAdapter扩展了FragmentPagerAdapter{
私有列表片段;
公共MyPageAdapter(FragmentManager fm,列出片段){
超级(fm);
this.fragments=片段;
}
@凌驾
公共片段getItem(int位置){
返回此.fragments.get(位置);
}
@凌驾
public int getCount(){
返回此.fragments.size();
}
}
}创建一个新的
片段,如下所示:
public class SuperAwesomeCardFragment extends Fragment {
CustomAdapter customAdapter;
ArrayList<String> values;
public static SuperAwesomeCardFragment superAwesomeFragment;
/**
* Creating new instance of the fragment
*
* @param position
* @return fragment
*/
public static SuperAwesomeCardFragment newInstance(int position) {
superAwesomeFragment = new SuperAwesomeCardFragment();
Bundle b = new Bundle();
b.putInt(ARG_POSITION, position);
superAwesomeFragment.setArguments(b);
return superAwesomeFragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
position = getArguments().getInt(ARG_POSITION);
values.add("First");
values.add("second");
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
mContainer = container;
LayoutParams params = new LayoutParams(LayoutParams.MATCH_PARENT,
LayoutParams.MATCH_PARENT);
FrameLayout fl = new FrameLayout(getActivity());
fl.setLayoutParams(params);
final int margin = (int) TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_DIP, 8, getResources()
.getDisplayMetrics());
ListView mListView = null;
mList = commomList(mListView, params, margin);
fl.addView(mList);
return fl;
}
/**
* Common list for all views *
*
* @param mList
* @param params
* @param margin
* @return
*/
private ListView commomList(ListView mList, LayoutParams params, int margin) {
mList = new ListView(getActivity());
params.setMargins(margin, margin, margin, margin);
mList.setLayoutParams(params);
mList.setLayoutParams(params);
customAdapter = new CustomAdapter(getActivity(), values);
mList.setAdapter(customAdapter);
return mList;
}
}
在MyPageAdapter
类中,使用
@Override
public Fragment getItem(int position) {
return SuperAwesomeCardFragment.newInstance(position);
}
您必须使用ListFragment
。创建一个ListFragment
,并将其显示在ViewPager
中。下面给出了一个简单的ListFragment
代码
SimpleListFragment.java
public class SimpleListFragment extends ListFragment {
String[] numbers_text = new String[] { "one", "two", "three", "four",
"five", "six", "seven", "eight", "nine", "ten", "eleven",
"twelve", "thirteen", "fourteen", "fifteen" };
String[] numbers_digits = new String[] { "1", "2", "3", "4", "5", "6", "7",
"8", "9", "10", "11", "12", "13", "14", "15" };
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
new CustomToast(getActivity(), numbers_digits[(int) id]);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
ArrayAdapter<String> adapter = new ArrayAdapter<String>(
inflater.getContext(), android.R.layout.simple_list_item_1,
numbers_text);
setListAdapter(adapter);
return super.onCreateView(inflater, container, savedInstanceState);
}
}
有关详细信息,请在展开并填充listview的布局中使用带有listview的片段。或者可以在每个项目上使用导航抽屉,单击在容器中添加新片段
public class SimpleListFragment extends ListFragment {
String[] numbers_text = new String[] { "one", "two", "three", "four",
"five", "six", "seven", "eight", "nine", "ten", "eleven",
"twelve", "thirteen", "fourteen", "fifteen" };
String[] numbers_digits = new String[] { "1", "2", "3", "4", "5", "6", "7",
"8", "9", "10", "11", "12", "13", "14", "15" };
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
new CustomToast(getActivity(), numbers_digits[(int) id]);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
ArrayAdapter<String> adapter = new ArrayAdapter<String>(
inflater.getContext(), android.R.layout.simple_list_item_1,
numbers_text);
setListAdapter(adapter);
return super.onCreateView(inflater, container, savedInstanceState);
}
}
if (index == 0) {
SimpleListFragment list = new SimpleListFragment ();
return list;
}