Java 更改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

我正在尝试根据列表视图中的文本更改每个单元格的颜色。这是我当前填充listview的方式:

    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;
}