2011-12-07 60 views
0

對於我的應用程序,我從數據庫中檢索一個數字。當活動啓動時,它必須以不同的顏色顯示數字,然後顯示列表中的其他數字。如何在創建/開始活動期間訪問listview項目?

從數據庫中檢索數據之後,這是我的代碼:

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

這段代碼放在在OnCreate功能。我一直爲孩子textview獲得一個空值。然後我發現,null值的原因是在OnCreate函數中,listview仍然需要被渲染。然後我將代碼移到了OnStart()函數,但是這也不起作用。

任何人都可以告訴我如何在創建/開始活動期間從列表視圖中檢索子行?

回答

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

不知道我得到了它的所有權利,但類似的東西.. 希望它幫助。

+0

通過使用你的例子,我必須在xml中擁有所有視圖。目前我正在嘗試以編程方式執行此操作。我創建了一個字符串[]來存放數字,之後我用字符串[]創建了一個新的ArrayAdapter。然後,我嘗試爲正確的視圖着色。你會知道這樣做的解決方案嗎? – Aidan

+0

我編輯了我的答案以滿足您的需求。希望能幫助到你。 :) – Joe

+0

我沒有使用你的整個答案,但我找到了解決我的問題,因爲它。謝謝! – Aidan

相關問題