对于我的应用程序,我从数据库中检索一个数字。当活动开始时,它必须以与列表中的其他数字不同的颜色显示数字。
从数据库中检索数据后,这是我的代码:
int row = 5;
TextView child = (TextView)ListView.GetChildAt(row);
child.SetTextColor(Color.Red);
此代码放在OnCreate函数中。我一直为子textview获取null值。然后我发现null值的原因是在OnCreate函数中仍然需要呈现listview。然后我将代码移动到OnStart()函数,但这也无效。
有人能告诉我在创建/开始活动期间如何从列表视图中检索子行吗?
答案 0 :(得分:1)
即使您能够以这种方式执行此操作,您也会遇到此视图被回收的问题..(当您向上和向下滚动时,您会看到其他视图以红色着色)。 您需要覆盖适配器并将视图的颜色设置在所需的位置 在getView() -
下TextView myText = (TextView) view.findViewById(R.Id ....
if (pos==5)
myText.setTextColor(Color.Red);
else
myText.setTextColor(Color.Black); //original color..
修改强>
您不需要自定义xml。如果你找到android的xml,你可以找到它的id。我相信它的android.R.id.text1。所以你的适配器应该看起来像
myAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, android.R.id.text1) {
@Override
public View getView(int position, View v, ViewGroup parent) {
if (v == null) {
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = inflater.inflate(android.R.layout.simple_list_item_1, null);
}
View view = super.getView(position, v, parent);
if (position==5)
view.setTextColor(Color.Red);
else
view.setTextColor(Color.Black); //original color..
}
myList.setAdapter(myAdapter);
不确定我没事,但是那样...... 希望它有所帮助。