如何在创建/开始活动期间访问listview项目?

时间:2011-12-07 10:52:25

标签: android listview xamarin.android

对于我的应用程序,我从数据库中检索一个数字。当活动开始时,它必须以与列表中的其他数字不同的颜色显示数字。

从数据库中检索数据后,这是我的代码:

int row = 5;
TextView child = (TextView)ListView.GetChildAt(row);
child.SetTextColor(Color.Red);

此代码放在OnCreate函数中。我一直为子textview获取null值。然后我发现null值的原因是在OnCreate函数中仍然需要呈现listview。然后我将代码移动到OnStart()函数,但这也无效。

有人能告诉我在创建/开始活动期间如何从列表视图中检索子行吗?

1 个答案:

答案 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);

不确定我没事,但是那样...... 希望它有所帮助。