0

リストビュー用のアダプターをいくつか作成しました。これらのビューのいくつかの要素を、プロパティに基づいて異なるレイアウトで描画する必要があります。

そこで、2 つの 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

とを利用しgetItemViewTypeます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 に答える