[英]How to change TextView font color in ListView
由于某种原因,我似乎无法更新 ListView 项目中文本的颜色。 我不确定为什么会发生这种情况,有人知道吗?
ArrayList<HashMap<String, String>> listTimbangan;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main1);
listTimbangan = new ArrayList<>();
HashMap<String, String> ArrayTimbangan = new HashMap<>();
ArrayTimbangan.put("status", statusTimbangan);
listTimbangan.add(ArrayTimbangan);
SimpleAdapter adapter = new SimpleAdapter(
Main1Activity.this, listTimbangan,
R.layout.activity_main2,
new String[]{"status" },
new int[]{R.id.statusTimbangan }){
@Override
public View getView(int position, View convertView, ViewGroup parent){
View view1 = super.getView(position, convertView, parent);
for (int j = 0; j < listTimbangan.size(); j++){
if (listTimbangan.get(j).containsValue("Terbayar")){
TextView tx_status = (TextView) findViewById(R.id.statusTimbangan);
tx_status.setText(getResources().getString(R.string.Terbayar));
tx_status.setTextColor(R.color.green1);
} else if (listTimbangan.get(j).containsValue("Ditolak")){
TextView tx_status = (TextView) findViewById(R.id.statusTimbangan);
tx_status.setText(getResources().getString(R.string.Ditolak));
tx_status.setTextColor(R.color.red);
} else if (listTimbangan.get(j).containsValue("Tertunda")){
TextView tx_status = (TextView) findViewById(R.id.statusTimbangan);
tx_status.setText(getResources().getString(R.string.Tertunda));
tx_status.setTextColor(R.color.orange);
} else if (listTimbangan.get(j).containsValue("Idle")){
TextView tx_status = (TextView) findViewById(R.id.statusTimbangan);
tx_status.setText(getResources().getString(R.string.Idle));
tx_status.setTextColor(R.color.blue);
}
}
return view1;
}
};
lv.setAdapter(adapter);
activity_main1 xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".Main1Activity">
<ListView
android:id="@+id/listDetailTimbangan"
style="@style/Widget.AppCompat.ListView"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</RelativeLayout>
activity_main2 xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="@color/white"
tools:context=".Main2Activity">
<TextView
android:id="@+id/statusTimbangan"
android:layout_width="100dp"
android:padding="10dip"
android:text="status"
android:textSize="11dp"
android:textAlignment="center"
android:textColor="#000000"
android:layout_height="wrap_content" />
</RelativeLayout>
错误信息是...
(TextView) tx_status 值始终为 null,当我想更改值并更改 textview 颜色时,我会从错误消息中得到报告
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference
解决了
我只是添加一些代码,例如
@Override
public View getView(int position, View convertView, ViewGroup parent){
View view1 = super.getView(position, convertView, parent);
view1.findViewById(R.layout.activity_main2);
for (int j = 0; j < listTimbangan.size(); j++){
if (listTimbangan.get(j).containsValue("Terbayar")){
TextView tx_status = (TextView) findViewById(R.id.statusTimbangan);
tx_status.setText(getResources().getString(R.string.Terbayar));
tx_status.setTextColor(ColorStateList.valueOf(getResources().getColor(R.color.green1)));
}
}
}
return view1;
}
谢谢你的帮助
我真的建议你搬到RecyclerView
。 您可以轻松地将自己的布局添加到其中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.