Android 将寻呼机视为列表视图行项目

Android 将寻呼机视为列表视图行项目,android,listview,android-viewpager,Android,Listview,Android Viewpager,我有一个20行的列表视图,我想设置一个视图页面作为列表视图中的每一行。由于列表视图我的行中的项目可能是一个或多个,因此我希望使用视图页面显示列表视图行项目 为此,我使用以下代码: 将在列表视图行中显示的自定义布局(作为寻呼机项目) 列表视图适配器获取视图方法 @Override public View getView(int position, View convertView, ViewGroup parent) { LayoutInflater inflater = (Layou

我有一个20行的列表视图,我想设置一个视图页面作为列表视图中的每一行。由于列表视图我的行中的项目可能是一个或多个,因此我希望使用视图页面显示列表视图行项目

为此,我使用以下代码:

将在列表视图行中显示的自定义布局(作为寻呼机项目)

列表视图适配器获取视图方法

@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;
}