如何根据它的值更改listview中textview的文本颜色?

时间:2014-05-02 11:05:59

标签: android android-listview textview textcolor

我在列表视图中更改textview的textcolor时遇到了困难。

我有一行由多个textview组成,但只有一个textview可见。

我希望textview的文本根据该行中其他textview的值更改textview的颜色。我很确定你在看到代码时会理解我的意思。

runOnUiThread(new Runnable() {
            public void run() {
                /**
                 * Updating parsed JSON data into ListView
                 * */
                ListAdapter adapter = new SimpleAdapter(
                        MainActivity.this, strojeviList,
                        R.layout.list_item, new String[] { TAG_SIFSTROJA,
                                TAG_NAZIVSTROJA, TAG_AKTIVAN, TAG_AUTH,
                                TAG_IP, TAG_POCETAK},
                        new int[] { R.id.sifstroja, R.id.nazivstroja, R.id.aktivan,
                                R.id.auth, R.id.ip,R.id.pocetak});
                // updating listview
                setListAdapter(adapter);
             View v;
            TextView blab= (TextView)findViewById(R.id.tekst);
           blab.setTextColor(getResources().getColor(R.color.zelena));

             ListView lv=getListView();

                TextView akt;
                TextView naziv;
                int bla=lv.getCount();
                Log.d(TAG_AUTH,String.valueOf(bla));
                for (int i = 0; i < lv.getCount(); i++) {
                    v=(View) lv.getAdapter().getView(i,null,null);
                    akt = (TextView) v.findViewById(R.id.aktivan);
                    naziv=(TextView)v.findViewById(R.id.nazivstroja);
                    String aktiv=akt.getText().toString();
                    String aktivtekst=naziv.getText().toString();

                    Log.d(aktiv, aktiv);
                    if(aktiv.equals("1"))
                    {
                        Log.d("uso","uso sam");
                        Log.d("uso",aktivtekst);

                        naziv.setTextColor(getResources().getColor(R.color.zelena));

                    }
                    else {
                        Log.d("nisam aktivan","nisam aktivan");
                        Log.d("nisam aktivan",aktivtekst);
                        naziv.setTextColor(getResources().getColor(R.color.crvena));
                    }
                }


            }

我可以获取textview值,如果部分工作正常但颜色没有改变,那么我该怎么做才能改变颜色?

3 个答案:

答案 0 :(得分:0)

试试这个......

naziv.setTextColor(Color.parseColor(getResources().getColor(R.color.crvena)));

答案 1 :(得分:0)

您需要在适配器的getView方法中移动此代码,例如:

....
ListAdapter adapter = new SimpleAdapter(
                    MainActivity.this, strojeviList,
                    R.layout.list_item, new String[] { TAG_SIFSTROJA,
                            TAG_NAZIVSTROJA, TAG_AKTIVAN, TAG_AUTH,
                            TAG_IP, TAG_POCETAK},
                    new int[] { R.id.sifstroja, R.id.nazivstroja, R.id.aktivan,
                            R.id.auth, R.id.ip,R.id.pocetak}){
@Override
public View getView(int position, View convertView, ViewGroup parent) {
    View v = super.getView(position, convertView, parent);
    TextView akt = (TextView) v.findViewById(R.id.aktivan);
    TextView naziv=(TextView)v.findViewById(R.id.nazivstroja);
    String aktiv=akt.getText().toString();
    String aktivtekst=naziv.getText().toString();

    Log.d(aktiv, aktiv);
    if(aktiv.equals("1"))
    {
           Log.d("uso","uso sam");
           Log.d("uso",aktivtekst);
           naziv.setTextColor(getResources().getColor(R.color.zelena));

     }
     else {
           Log.d("nisam aktivan","nisam aktivan");
           Log.d("nisam aktivan",aktivtekst);
            naziv.setTextColor(getResources().getColor(R.color.crvena));
     }  
    return v;
  }
};
setListAdapter(adapter);

TextView blab= (TextView)findViewById(R.id.tekst);
blab.setTextColor(getResources().getColor(R.color.zelena));

答案 2 :(得分:0)

有很多方法可以在运行时更改textColor TextView

  • textView.setTextColor(Color.rgb(0,0,0));

  • textView.setTextColor(Color.RED);

  • textView.setTextColor(getResources().getColor(R.color.red));

这里需要注意的是:

  

int android.graphics.Color.GREEN = -16711936 [0xff00ff00]
  int com.example.R.color.green = 2130968577 [0x7f040001]

你可以看到两者都不相同,但 /res/values/color.xml 是这样的:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="red">#ff0000</color>
    <color name="green">#00ff00</color>
</resources>

所以我认为,由于 android.graphics.Color.GREEN com.example.R.color.green 的区别,我们没有得到预期使用textView.setTextColor(R.color.green);

时的结果