For some reason I cannot seem to update the color of the text in my ListView items. I'm not sure exactly why this is happening, does anyone have an idea?
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>
And the error message is...
(TextView) tx_status value is always null, and when I want to change value and change textview color, I will get report from the error message
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference
SOLVED
I just add some code like
@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;
}
thanks for helping
I really suggest you move to RecyclerView
. You can inflate your own layout into them without a hassle.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.