2

我有以下列表视图:

<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 的背景颜色。

4

3 回答 3

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;
            }
        };
于 2013-08-26T13:24:52.000 回答
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;
        }
    };

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

于 2013-08-27T05:44:52.697 回答
0

首先,您应该将 lm.getChildAt(i) 转换为此处的特定类型...示例:如果 lm.getChildAt(i) 是这样的文本视图:

TextView txtv1 = (TextView)lm.getChildAt(i);
txtv1.setBackgroundColor(Color.BLUE);
于 2013-08-26T13:22:11.277 回答