【发布时间】:2013-12-25 15:05:37
【问题描述】:
我已经阅读了很多关于这个问题的相关问题。然而,他们都没有得到答复。我正在尝试将ViewPager 添加到ListView 中的每一行,其中寻呼机中有两个布局。我相信这是可行的,因为 SwipeListView。
现在我已经实现了。但是,显示的是空白页,中间有一行。没有出现任何行。
这是我的代码:
MainActivity + ArrayAdapter
public class MainActivity extends Activity {
ListView list;
String[] heros;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
heros = getResources().getStringArray(R.array.heros);
list = (ListView) findViewById(R.id.listView1);
list.setAdapter(new CustomAdapter(this, heros));
}
public class CustomAdapter extends ArrayAdapter<String>
{
String[] heros;
Context context;
public CustomAdapter(Context context, String[] heros) {
super(context, R.layout.pager_item_list, R.id.listView1, heros);
// TODO Auto-generated constructor stub
this.heros = heros;
this.context = context;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View row = inflater.inflate(R.layout.pager_item_list, parent, false);
Log.d("how many times", "I really don't know how it should be");
ViewPager pager = (ViewPager) row.findViewById(R.id.pager);
pager.setId(position);
pager.setAdapter(new PagerCustomAdapter());
pager.setCurrentItem(0);
return row;
}
}
}
这是我的页面适配器
public class PagerCustomAdapter extends PagerAdapter{
@Override
public int getCount() {
// TODO Auto-generated method stub
return 2;
}
@Override
public Object instantiateItem(View container, int position) {
// TODO Auto-generated method stub
LayoutInflater inflater = (LayoutInflater) container.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
int id = 0;
Log.d("I am in pagerAdater", "I am here, dammit!");
switch(position)
{
case 0:
id = R.layout.fragment_top_item;
break;
case 1:
id = R.layout.fragment_bottom_item;
break;
}
View view = inflater.inflate(id, null);
((ViewPager)container).addView(view, 0);
return view;
}
@Override
public void destroyItem(View arg0, int arg1, Object arg2) {
((ViewPager) arg0).removeView((View) arg2);
}
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
// TODO Auto-generated method stub
return arg0 == ((View) arg1);
}
@Override
public Parcelable saveState() {
return null;
}
}
pagerAdapter 和 FragmentPagerAdapter 我都试过了,结果都一样
我在getView() 和instantiateItem() 中添加了两条日志消息,并且都按预期在logcat 中读取。 LogCat 中既没有警告也没有错误。
我错过了什么?
更新
activity_main 的 XML
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<ListView
android:id="@+id/listView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true" >
</ListView>
</RelativeLayout>
pager_item_list 的 XML
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="match_parent" >
</android.support.v4.view.ViewPager>
</LinearLayout>
【问题讨论】:
-
首先清理你的项目并运行,告诉我结果。
-
不幸的是,我什至在我的设备上尝试过同样的结果
-
粘贴你的
R.layout.activity_main和R.layout.pager_item_list。 -
请检查更新部分
-
@Coderji 先生,您的问题解决了吗?因为我尝试实现这些代码但不起作用
标签: android android-listview android-viewpager