0

我为列表视图编写了一些适配器。我需要根据属性绘制具有不同布局的这些视图的一些元素。

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

问题是位置似乎与整个列表无关,而仅与它的一部分相关,这取决于当前视图(例如:滚动它)

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

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

1 回答 1

2

使用getItemViewTypeand getViewTypeCount

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

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

于 2013-09-25T13:48:07.990 回答