Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/199.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android ListView的BaseAdapter getView(int位置)存在问题_Android_Android Layout_Android Listview_Android Adapter - Fatal编程技术网

Android ListView的BaseAdapter getView(int位置)存在问题

Android ListView的BaseAdapter getView(int位置)存在问题,android,android-layout,android-listview,android-adapter,Android,Android Layout,Android Listview,Android Adapter,我为ListView编写了一些适配器。我需要根据一个属性使用不同的布局绘制这些视图的一些元素 因此,我将两个ArrayList数据和ArrayList属性传递给适配器,并在getView(int位置)中检查property.get(位置) 问题在于,位置似乎与整个列表无关,而只与列表中根据当前视图而变化的部分相关(例如:滚动列表) 我怎样才能得到想要的效果? 为什么这个问题不影响数据数组列表 @Override public View getView(int position, View vie

我为ListView编写了一些适配器。我需要根据一个属性使用不同的布局绘制这些视图的一些元素

因此,我将两个ArrayList数据和ArrayList属性传递给适配器,并在getView(int位置)中检查property.get(位置)

问题在于,位置似乎与整个列表无关,而只与列表中根据当前视图而变化的部分相关(例如:滚动列表)

我怎样才能得到想要的效果? 为什么这个问题不影响数据数组列表

@Override
public View getView(int position, View view, ViewGroup parent) {

    /**
     * Holder mantiene una reference all'albero delle views per evitare chiamate continue di findiViewById
     */
    ViewHolder holder;

    if (view == null){

        /** si usa inflate solo se è null */
         holder = new ViewHolder();



         if (!lemon.get(position)){
             view = mInflater.inflate(R.layout.contact_layout, null);
             holder.name = (TextView) view.findViewById(R.id.contact_name);
         }else {
             view = mInflater.inflate(R.layout.contact_lemon_layout, null);
             holder.name = (TextView) view.findViewById(R.id.contact_name);
         }

         view.setTag(holder);


    }else {


        holder = (ViewHolder) view.getTag();
    }


    holder.name.setText(names.get(position));

    return view;
}

使用
getItemViewType
getViewTypeCount

        @Override
        public int getViewTypeCount() {
            return 2;
        }
        @Override
        public int getItemViewType(int position) {
            return lemon.get(position)?0:1;
        }

您的代码现在应该可以在
getView

中使用了。谢谢,我该如何设置视图类型。只是想知道在getView中有没有同样的方法?就是这样。您可能应该使用静态int类型_LEMON=0和静态int类型_NOT_LEMON=1,而不是0和1。在getView中,只需使用getItemViewType(位置)检查类型,以选择充气的内容以及如何准备视图。但无论如何,如果您只添加这两个函数,您的代码应该可以完美地工作。