繁体   English   中英

如何在 ListView 中更改 TextView 字体颜色

[英]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.

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