如何使用彩色项目的背景自定义ListView?

Pet*_* O. 8 android listviewitem android-sdk-2.1 android-listview

我创建了一个ArrayList<HashMap<String, String>>集合来保存我的数据ListView.我正在使用SimpleAdapter.

当列表项的ID为%10 == 0时,是否可以更改列表项的背景?

这是代码(生成布局的方法):

private void fillData() {

    Cursor c = this.mDbManager.getNgOrderDetailByOrderNumber(this.mNumber);

    ArrayList<HashMap<String, String>> items = new ArrayList<HashMap<String, String>>();

    if (!c.isAfterLast()) {
       do {
           // ... filling HashMap and putting it to ArrayList
       } while (c.moveToNext());   
    }

    SimpleAdapter adapter = new SimpleAdapter(this, items, R.layout.list_item, 
        new String[] { "product", "ordered", "price", "discount" }, 
        new int[] { R.id.ProductTextView, R.id.OrderedTextView,
        R.id.PriceTextView, R.id.DiscountTextView });
     ListView l = (ListView) findViewById(android.R.id.list);
     l.setAdapter(adapter);
}
Run Code Online (Sandbox Code Playgroud)

Che*_*mon 8

您在适配器中覆盖getView以对视图进行更改.请记住,ListView重用了视图实现,因此如果将颜色更改为项目10,请确保将颜色设置为与所有其他视图相反的颜色.

例如

new SimpleAdapter( ... ) {
  @Override
  public View getView (int position, View convertView, ViewGroup parent) {
    View view = super.getView(position, convertView, parent);
    if (position == 10) {
      // set background color = red;
    } else {
      // set background color = green;
    }
    return view;
  }
}
Run Code Online (Sandbox Code Playgroud)