[英]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.