我有这个类,但是没有点击监听器我无法获取ListView项目......我只是想更新onResume上的文本颜色......
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setListAdapter( new ArrayAdapter<String>(this, R.layout.overlay_options, FishSpecie.getFishSpecies()));
mList = getListView();
mList.setTextFilterEnabled(true);
mList.setOnItemClickListener(new OnItemClickListener(){
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
// TODO Auto-generated method stub
Boolean status = doClick(((TextView) arg1).getText());
if(status == true)
{
((TextView) arg1).setTextColor(Color.GREEN);
Toast.makeText(getApplicationContext(), ((TextView) arg1).getText() + " Enabled", Toast.LENGTH_SHORT).show();
}
else
{
((TextView) arg1).setTextColor(Color.DKGRAY);
Toast.makeText(getApplicationContext(), ((TextView) arg1).getText() + " Disabled", Toast.LENGTH_SHORT).show();
}
}
});
// Create all the overlay check boxes and labels
}
@Override
protected void onStart() {
// TODO Auto-generated method stub
super.onStart();
updateList();
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
updateList();
}
protected void updateList() {
mList = getListView();
for (int i = 0; i < mList.getChildCount(); i++)
{
View v = mList.getChildAt(i);
TextView tx = (TextView) v.findViewById(R.layout.overlay_options);
if(FishSpecie.isFishSpecieEnabled(tx.getId()) == true) {
// Change color of list item
tx.setTextColor(Color.GREEN);
}
else
{
tx.setTextColor(Color.DKGRAY);
}
}
}
查看v = mList.getChildAt(i);这从未找到孩子
澄清mList.getChildCount()始终返回0
我想我几乎已经修好了但是我无法理解为什么颜色变化没有影响......下面是更新功能的新代码
protected void updateList() {
for (int i = 0; i < mArray.getCount();i++) {
//TextView v = (TextView)(findViewById((int) mArray.getItemId(i)));
TextView v = (TextView) mArray.getView(i, null , null);
String text = (String) v.getText();
if(FishSpecie.isFishSpecieEnabled(i) == true) {
// Change color of list item
v.setTextColor(Color.GREEN);
}
else
{
v.setTextColor(Color.DKGRAY);
}
}
}
答案 0 :(得分:1)
搜索文字视图时,您可能希望R.id.overlay_options
不是R.layout.overlay_options
。
更新
不确定为什么你会得到0个子计数但是你的方法可能不会起作用,因为这些视图被重用于不同的项目。更好的方法可能是在适配器上自定义getView
方法以显示正确的颜色。