Android:每个行项的ListView背景

时间:2012-01-12 09:09:36

标签: android list listview

我有以下ListView:

<ListView android:id="@android:id/list" android:layout_width="fill_parent" android:divider="@drawable/line"
        android:layout_height="fill_parent" android:background="@drawable/bg"/>

但我想为每个行项设置背景。当我设置android:background属性时,我改变了整个列表的背景而不仅仅是每一行的背景。

如何为行中的每个项目设置可绘制背景?我尝试了一切。我唯一能改变的是行之间显示的android:divider drawable。 提前谢谢!

2 个答案:

答案 0 :(得分:0)

您需要为行指定costum视图布局,例如LinearLayout等。 在此布局中,您可以指定背景颜色或图像,或者指定任何颜色。

稍后在getView()函数的列表适配器中加载此布局 这种观点使布局变得更加充实。

答案 1 :(得分:0)

*Use Custom Adapter.

First create Custom Adapter class and set this to fill listView

ex: 

class CusAdapter extends BaseAdapter
 {

  private Context mContext;

  public ImageAdapter(Context c)
  {

   mContext = c;

  }

  public int getCount()

  {

   return 10;
  }

  public Object getItem(int position)

  {

   return null;

  }

  public long getItemId(int position)
  {

   return 0;

  }

  // create a new ImageView for each item referenced by the Adapter

  public View getView(int position, View convertView, ViewGroup parent)
  {

           //create a layout for listView

           LinearLayout lLayout = new LinearLayout(this);

       lLayout.setOrientation(LinearLayout.VERTICAL);

       lLayout.setLayoutParams(new LayoutParams(
           LayoutParams.MATCH_PARENT,

       LayoutParams.MATCH_PARENT));


         //check position and set background

            if(position%2==0)
            {

                   lLayout.setBackgroundResource(R.id.bckResource1);

               } 
            else

                   lLayout.setBackgroundResource(R.id.bckResource2);

        return lLayout;

   }

}

 after this set this adapter to fill listview

 listView.setAdpater(new cusAdapter(this));*