0

私は現在持っていListView Adaptorます。

アイテムのにListView応じて背景の色を変更するにはどうすればよいですか?ListView

i.e if(item.param1 == "some")
{
colour1
}
else
{
colour2
}

私のコード

   import java.util.HashMap;
   import java.util.List;

   import android.content.Context;
   import android.view.View;
   import android.view.ViewGroup;
   import android.widget.SimpleAdapter;
   import android.widget.TextView;

   public class SpecialAdapter extends SimpleAdapter {
    private int[] colors = new int[] { 0xFFFFFFFF, 0xFF000000 };
    TextView tv1, tv2;

    public SpecialAdapter(Context context, List<HashMap<String, String>> items, int resource, String[] from, int[] to) {
        super(context, items, resource, from, to);
    }



    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
      View view = super.getView(position, convertView, parent);

      view.setBackgroundColor(colors[colorPos]);
      return view;
    }
    }

うまくいけば、それは理にかなっています

4

1 に答える 1

0

オーバーライドする必要があります

getViewTypeCount()

getItemViewType(int position)

ListAdapter内で、色ごとに異なるタイプを定義します。ListviewはListItemsをリサイクルするため、BindViewでのみ色を変更するソリューションでは良い結果が得られないため、再利用されたアイテムの色を前後に変更することになります。

ViewTypeCount> 1を指定すると、Listviewは、異なるレイアウトを使用していることを認識し、適切な再循環されたListItemを提供します。詳細については、このチュートリアルを参照してください。

http://android.amberfog.com/?p=296

于 2012-07-31T17:57:55.310 に答える