Android 如何动态改变GridView的item样式?

Q:想 请教一下如果不使用点击事件,如何取到item中的text view控件 通过业务条件修改某个item的text view?
比如当数据大于0时,grid view中的某个item中的textview显示红色字体
当数据小于0时,text view显示绿色字体

MainActivity.java
在这里通过handler取到数据然后用SimpleAdapter渲染到gridView上。

handler = new Handler() {
            @Override
            public void handleMessage(Message msg) {
                ArrayList<HashMap<String, Object>> dataFirst = (ArrayList<HashMap<String, Object>>) msg.obj;
                SimpleAdapter allAdapter = new SimpleAdapter(DrugStoreActivity.this, dataFirst,R.layout.item,
                        new String[]{"area_light_no", "drug_name", "specification", "drug_lot", "drug_expdate", "curr_qty"},
                        new int[]{R.id.area_light_no, R.id.drug_name, R.id.specification, R.id.drug_lot, R.id.drug_expdate, R.id.curr_qty});
                gridView.setAdapter(allAdapter);
            }
        };

GridView所在的xml

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
        <GridView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:numColumns="auto_fit"
            android:columnWidth="280dp"
            android:stretchMode="columnWidth"
            android:id="@+id/gridView">
        </GridView>
    </LinearLayout>

GridView的item的xml

<?xml version="1.0" encoding="utf-8"?>
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_weight="3">

                <TextView
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:gravity="center"
                    android:textColor="#FF0000"
                    android:textSize="25dp"
                    android:text="1"
                    android:textStyle="bold|italic"
                    android:id="@+id/area_light_no"></TextView>
            </LinearLayout>

</LinearLayout>

谢!

你把Adapter 类单独写出去(可以百度怎么写),然后数据、布局都能按照你的逻辑去展示, 刷新起来也方便,数据一改 adapter一刷新就可以了。

如楼上所说,单独写一个适配器,提供一个设置需要改变刷新某个item的方法,例如 fun refreshItemColor(position:Int,color:Int){
this. position= position
this. color = color
notifyDataSetChanged();
},
然后在 onBindViewHolder 中 根据 position 决定是否改变TextView 颜色即可