Android 将寻呼机视为列表视图行项目
我有一个20行的列表视图,我想设置一个视图页面作为列表视图中的每一行。由于列表视图我的行中的项目可能是一个或多个,因此我希望使用视图页面显示列表视图行项目 为此,我使用以下代码: 将在列表视图行中显示的自定义布局(作为寻呼机项目) 列表视图适配器获取视图方法Android 将寻呼机视为列表视图行项目,android,listview,android-viewpager,Android,Listview,Android Viewpager,我有一个20行的列表视图,我想设置一个视图页面作为列表视图中的每一行。由于列表视图我的行中的项目可能是一个或多个,因此我希望使用视图页面显示列表视图行项目 为此,我使用以下代码: 将在列表视图行中显示的自定义布局(作为寻呼机项目) 列表视图适配器获取视图方法 @Override public View getView(int position, View convertView, ViewGroup parent) { LayoutInflater inflater = (Layou
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.horizontal_list_item, null,false);
MyPagerAdapter adapter = new MyPagerAdapter(context);
ViewPager myPager = (ViewPager) convertView.findViewById(R.id.mypager);
myPager.setAdapter(adapter);
myPager.setCurrentItem(0);
return convertView;
}
我没有收到任何错误,运行后渲染的视图始终为空。将InstanceItem()中的行更改为: 致: 我也面临同样的问题。 只需为viewpager和列表视图行布局的主容器(如果需要)提供高度
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="40dip"
android:orientation="horizontal" >
<android.support.v4.view.ViewPager
android:id="@+id/mypager"
android:layout_width="match_parent"
android:layout_height="40dip" />
</RelativeLayout>
高度必须由固定值设置。如果您想使其动态化,可以尝试在运行时在编码中设置它。我创建了示例应用程序
带有片段的示例ViewPager:
但是有一个很大的缺点。所有的单元都存储在内存中,应用程序可能会因内存不足而崩溃,无论您有多少单元
编辑:
从经验上看,它已经被发现。如果在查看页面中使用简单查看而不是片段。
我可以正确地编写适配器,而不会被内存击中
带有视图的ViewPager示例:
我希望有人能提供帮助我也遇到过同样的问题,并通过在
getView()
方法中动态地向viewpager提供id来解决它
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.horizontal_list_item, null,false);
MyPagerAdapter adapter = new MyPagerAdapter(context);
ViewPager myPager = (ViewPager) convertView.findViewById(R.id.mypager);
**myPager.setId(position + getCount());**
myPager.setAdapter(adapter);
myPager.setCurrentItem(0);
return convertView;
}
希望这能对你有所帮助。我也面临同样的问题。。你能告诉我你是否修复了它吗?是的,我可以帮助你,告诉我你的代码,你在哪里得到相同的。我建议用你的代码发布一个问题,我会检查它并回答你。请看这是我的问题,我的问题中有没有运气?!。。希望你能帮助我,或者至少解决你的问题,把它标记为正确的,这样我们就可以联系到它。很抱歉打扰您,提前谢谢您。非常感谢!!我在这件事上耽搁了一个月,解决办法是如此简单和愚蠢。。我仍然不明白,当我尝试在ViewHolder中使用此方法时,会遇到一个异常“找不到资源ID”。但当我向下滚动并向上滚动时,viewpager是黑色的。(它实际占用空间,但不是它的空白)从构造函数捕获的上下文
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder;
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.listview_row, parent, false);
CustomeListModel customeListModel = arrayList.get(position);
Utils.d("debug", "in get view method ");
MyPagerAdapter adapter = new MyPagerAdapter(context, customeListModel);
viewHolder=new ViewHolder();
viewHolder.viewPager= (ViewPager) convertView.findViewById(R.id.mypager);
viewHolder.viewPager.setId(position + getCount());
viewHolder.viewPager.setAdapter(adapter);
viewHolder.viewPager.setMinimumWidth(100);
viewHolder.viewPager.setCurrentItem(1);
viewHolder.viewPager.setPageMargin(-380);
convertView.setTag(viewHolder);
return convertView;
}
((ViewPager) container).addView(view, position);
((ViewPager) container).addView(view, 0);
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="40dip"
android:orientation="horizontal" >
<android.support.v4.view.ViewPager
android:id="@+id/mypager"
android:layout_width="match_parent"
android:layout_height="40dip" />
</RelativeLayout>
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.horizontal_list_item, null,false);
MyPagerAdapter adapter = new MyPagerAdapter(context);
ViewPager myPager = (ViewPager) convertView.findViewById(R.id.mypager);
**myPager.setId(position + getCount());**
myPager.setAdapter(adapter);
myPager.setCurrentItem(0);
return convertView;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder;
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.listview_row, parent, false);
CustomeListModel customeListModel = arrayList.get(position);
Utils.d("debug", "in get view method ");
MyPagerAdapter adapter = new MyPagerAdapter(context, customeListModel);
viewHolder=new ViewHolder();
viewHolder.viewPager= (ViewPager) convertView.findViewById(R.id.mypager);
viewHolder.viewPager.setId(position + getCount());
viewHolder.viewPager.setAdapter(adapter);
viewHolder.viewPager.setMinimumWidth(100);
viewHolder.viewPager.setCurrentItem(1);
viewHolder.viewPager.setPageMargin(-380);
convertView.setTag(viewHolder);
return convertView;
}