Listview背景颜色未更新

时间:2013-08-26 13:01:11

标签: android android-intent android-listview

我有以下listview:

<ListView
        android:id="@+id/listView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/textView1"
        android:layout_below="@+id/textView1" >
    </ListView>

我想更新其第n列的背景颜色。

我正在使用:

int numOfMessages=lst.length-lstNew.length;  
ArrayAdapter<String> adpt = new ArrayAdapter<String>(Messages.this, android.R.layout.simple_list_item_1,lst);
lm.setAdapter(adpt);
for (int i=1;i<numOfMessages;i++)
{
tv.setText("Welcome " + i);
lm.getChildAt(i).setBackgroundColor(Color.BLUE);
tv.setText("Welcome :  " + i);
}

但是行有问题:

lm.getChildAt(i).setBackgroundColor(Color.BLUE);

因为在那之后控制没有进一步发展。

请帮我改变textview的背景颜色。

3 个答案:

答案 0 :(得分:1)

试试这段代码:

ArrayAdapter<String> adpt = new ArrayAdapter<String>(Messages.this, android.R.layout.simple_list_item_1,lst){
            @Override
            public View getView(int position, View convertView, ViewGroup parent) {
                View v = super.getView(position, convertView, parent);
                v.setBackgroundColor(Color.BLUE);
                return v;
            }
        };

答案 1 :(得分:1)

你可以通过:

ArrayAdapter<String> adpt = new ArrayAdapter<String>(Messages.this, android.R.layout.simple_list_item_1,lst){
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            View v = super.getView(position, convertView, parent);
            if(position==2){
            v.setBackgroundColor(Color.BLUE);
            }else if(position==4){
            v.setBackgroundColor(Color.RED);
            } 
            return v;
        }
    };

对于你想要的那一行,就像这样......

答案 2 :(得分:0)

首先你应该将lm.getChildAt(i)转换为这里的具体类型...... 例如:如果lm.getChildAt(i)是类似的textview写:

TextView txtv1 = (TextView)lm.getChildAt(i);
txtv1.setBackgroundColor(Color.BLUE);