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 颜色即可