Java 将ListView中第一项的背景更改为红色
我有一个名为listv的listView,我正在用数组填充listView。我希望listView中第一项的背景颜色为红色。我可以填充列表,但是我无法使列表中的第一项变为红色 这就是我试过的。我的代码是fallows 我的班级Java 将ListView中第一项的背景更改为红色,java,android,listview,android-studio,Java,Android,Listview,Android Studio,我有一个名为listv的listView,我正在用数组填充listView。我希望listView中第一项的背景颜色为红色。我可以填充列表,但是我无法使列表中的第一项变为红色 这就是我试过的。我的代码是fallows 我的班级 private ArrayList<String> arrayList; private ArrayAdapter<String> adapter; private EditText txtInput; @Override protected vo
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"));
});
}
private ArrayList ArrayList;
专用阵列适配器;
私有编辑文本输入;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u list\u截止日期);
最终ListView ListView=(ListView)findViewById(R.id.listv);
字符串[]项={“HCI”、“ITM”、“表示”};
arrayList=新的arrayList(Arrays.asList(items));
适配器=新的ArrayAdapter(this,R.layout.list_项,R.id.txtitem,arrayList);
setAdapter(适配器);
txtInput=(EditText)findViewById(R.id.txtinputs);
如果(R.id.listv==0)
setBackgroundColor(Color.parseColor(“#fffff”);
});
}
xml
您可以使用自定义ArrayAdapter,覆盖getView(),并在其中检查“位置”==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;
}
}
class MyAdapter扩展了ArrayAdapter{
视图getView(int位置、视图转换视图、视图组父视图){
View ret=super.getView(位置、转换视图、父级);
如果(位置==0){
后退后退地面(红色);
}否则{
后退后退地面(白色);
}
返回ret;
}
}
您还可以添加一个标题视图来实现这一点
除非你需要使用ListVIEW,否则最好考虑一下RealReVIEW。< /P>所以我只需要创建一个新的类来添加那个代码,然后在我的另一个类中调用它。你创建一个适配器类,如上面所示的MyAdvor,然后做ListVIEW。当呈现列表项时,框架将调用适配器的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;
}
}