我在列表视图中更改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值,如果部分工作正常但颜色没有改变,那么我该怎么做才能改变颜色?
答案 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);