Java 更改ListView中单元格的背景颜色?
我正在尝试根据列表视图中的文本更改每个单元格的颜色。这是我当前填充listview的方式:Java 更改ListView中单元格的背景颜色?,java,android,android-studio,Java,Android,Android Studio,我正在尝试根据列表视图中的文本更改每个单元格的颜色。这是我当前填充listview的方式: DBHelper db = new DBHelper(this); List<HiveEquipment> heList = db.getEquipmentForHive(currentHiveId); final ArrayAdapter<HiveEquipment> dataAdapter = new ArrayAdapter<HiveEquipm
DBHelper db = new DBHelper(this);
List<HiveEquipment> heList = db.getEquipmentForHive(currentHiveId);
final ArrayAdapter<HiveEquipment> dataAdapter = new ArrayAdapter<HiveEquipment>(this,
android.R.layout.simple_list_item_1, heList);
final ListView equipmentList = (ListView) findViewById(R.id.listView);
runOnUiThread(new Runnable() {
@Override
public void run() {
equipmentList.setAdapter(dataAdapter);
}
});
因此,我正在尝试一些东西,我尝试使用以下方法更改背景颜色:
list.getChildAt0.setBackgroundColorColor.BLACK
这返回了一个空指针。因此,我使用以下方法检查了儿童人数:
Log.dTest,+equipmentList.getChildCount
但它返回0,即使它在我的listview中显示一个项目
有人能帮助我理解为什么返回0,以及我将如何选择每个单元格来更改背景颜色吗?在访问子视图对象之前,您需要确保listView已填充并显示在UI中。这意味着将创建每个子项视图。在您的情况下,我相信您正在尝试在将适配器设置为listView后立即获取子对象,这就是getChildAt返回null的原因 因此,使用您的方法,仅在创建列表视图后执行以下代码
View listViewChildAt = listView.getChildAt(0);
listViewChildAt.setBackgroundColor(Color.BLUE);
另一个最好的方法是创建一个自定义适配器,并在getView中为所需的子视图设置颜色
@Override
public View getView(int position, View contentView , ViewGroup parent)
{
String text = getItem(position);
View row = mContext.getLayoutInflater().inflate(android.R.layout.simple_list_item_1, null);
if(text.equalsIgnoreCase("yourText")){
row.setBackgroundColor(Color.BLUE);
}
return row;
}