繁体   English   中英

将ListView中第一项的背景更改为红色

[英]Change background of first item in ListView to red

我有一个名为listv的listView,并用数组填充listView。 我希望listView中第一项的背景颜色为红色。 我可以填充列表,但是无法使列表中的第一项变成红色。

这就是我尝试过的。 我的代码是休假的

我的课

private ArrayList<String> arrayList;
private ArrayAdapter<String> adapter;
private EditText txtInput;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_list_deadlines);
    final ListView listView = (ListView)findViewById(R.id.listv);
    String[] items= {"HCI","ITM","Presentation"};
    arrayList=new ArrayList<>(Arrays.asList(items));
    adapter=new ArrayAdapter<String>(this,R.layout.list_item,R.id.txtitem,arrayList);
    listView.setAdapter(adapter);

    txtInput=(EditText)findViewById(R.id.txtinputs);


            if(R.id.listv == 0)
                listView.setBackgroundColor(Color.parseColor("#fffff"));


    });

}

XML文件

<ListView
    android:id="@+id/listv"
    android:layout_marginTop="100dp"
    android:layout_width="wrap_content"
    android:layout_height="200dp">

</ListView>

您可以使用自定义ArrayAdapter,重写getView()并在其中检查“ position” == 0,然后将项目的背景更改为所需的背景。 我相信调用notifyDataSetChanged()之后,每个项目都会调用它。

这不是正确的方法。 渲染每一行都在适配器内部进行。 您必须定义自己的适配器,也可以从ArrayAdapter扩展。 在其getView()方法中,首先调用基类getView,如果位置为零,则设置背景色。

class MyAdapter extends ArrayAdapter<String> {
     View getView(int position, View convertView, ViewGroup parent) {
          View ret = super.getView(position, convertView, parent);
          if (position == 0) {
              ret.setBackground(red);
          } else {
             ret.setBackground(white);
          }
          return ret;
     }
} 

您也可以添加标题视图来完成此操作。

除非需要使用ListView,否则最好考虑使用RecyclerView。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM