简体   繁体   中英

How to change TextView font color in ListView

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM