【问题标题】:How to set the background color of a specific item in listview by position?如何按位置设置列表视图中特定项目的背景颜色?
【发布时间】:2012-09-25 04:12:57
【问题描述】:

我想在列表视图中设置特定项目的背景颜色。

我的列表视图是由 ArrayAdapter 使用 ArrayList 生成的。

我计划更改列表视图中的特定项目的背景颜色。

我知道项目在列表中的位置。

这是我生成列表视图的代码。

respondMessageListView = (ListView) findViewById(R.id.respondMessageListView);
respondMessageListView.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, autoRespondMessages.getMessages()));

谢谢!

[编辑]

根据this post,如果在onCreate()中使用setSelection无效,解决方法是“删除PullToRefreshListView中的onAttachedToWindow方法”。我不太了解解决方案。请问我应该如何做到这一点?我是Activity 的子类,所以我不能再继承任何其他类了。

【问题讨论】:

标签: java android mobile


【解决方案1】:

您必须继承 ArrayAdapter 并覆盖 getView(...) 方法。为简单起见,您可以直接调用基类实现并为返回的View 设置背景颜色。

编辑: 以下示例将项目的背景设置为黑白交替。

private class MyAdapter extends ArrayAdapter {

    ...

    public View getView(int position, View convertView, ViewGroup parent) {
        View v = super.getView(position, convertView, parent);
        v.setBackgroundColor(position % 2 == 0 : 0xff000000, 0xffffffff);
    }
}

【讨论】:

  • 不是一回事。子类化 ArrayAdapter 允许您覆盖必要的方法。子类化 Activity 不会给你任何东西。在这里。
  • 嗯..我的意思是我只能继承一个类......所以如果我继承了 Activity,我不能再继承 ArrayAdapter
  • 您可以根据需要对任意多个类进行子类化。我认为您将此与多重继承混淆了。
  • 对不起,我还是不明白。 Java在关键字extends之后只接受一个类...如何子类化Activity和ArrayAdapter?
  • 不要说respondMessageListView.setAdapter(new ArrayAdapter&lt;String&gt;(...)),而是说respondMessageListView.setAdapter(new MyAdapter(...))。在另一个名为 MyAdapter.java 的文件中,您将继承 ArrayAdapter。
【解决方案2】:

此代码适用于您选择列表项时。

试试这个代码...

listview.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> myAdapter, View myView, int pos, long mylng) {

             if( pos == 1) {
                   // to change the listview background
                   listview.setBackgroundColor(getResources().getColor(R.color.your_color_id));

                   // to change the selected item background color
                   myView.setBackgroundColor(getResources().getColor(R.color.your_color_id));
             }
            }
          });

祝你好运。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-06-12
    • 2011-11-18
    • 1970-01-01
    • 2011-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-21
    相关资源
    最近更新 更多