如何在不使用网格视图的任何触摸事件的情况下更改网格视图中单元格背景的颜色

How to change the colour of cell background in grid view without any using any touch event of grid view

package com.example.dhavalpatel.atira;

import android.content.Intent;
import android.graphics.Color;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.GridLayout;
import android.widget.GridView;
import android.widget.TableLayout;
import android.widget.Toast;


public class second extends ActionBarActivity { 
     GridView gv;  

    String[] value1=value1=new String[]{"0","1","0","1","0"};
    String imc_met;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);

        gv=(GridView)findViewById(R.id.gridView);
        ArrayAdapter<String> ad = 
            new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,value1);

        gv.setAdapter(ad);
   }

所以我设置了一个带有数组适配器的网格视图,以在单元格中添加值。我想要一个检查单元格值的事件,如果它是 1,那么它会更改背景颜色,但不接触单元格。例如 OnClick 事件或 OnSelectedItem 等。不能使用这些。

我想在 activity 加载时检查每个单元格的值。我的意思是,当调用 activity 时,它应该显示网格视图,其中单元格值为 0 或 1,单元格值为 1 时,背景颜色应为红色。

您可以覆盖 ArrayAdaptergetView() 并设置视图的背景颜色。

ArrayAdapter<String> ad = new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_list_item_1, value1) {
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            View view = super.getView(position, convertView, parent);
            String value = getItem(position);
            if (value.equals("0")) {
                view.setBackgroundColor(Color.GRAY);
            } else {
                view.setBackgroundColor(Color.RED);
            }
           // Updating the text color.
           TextView textView= (TextView) view;
           textView.setTextColor(Color.BLACK);
            return view;
        }
    };