2012-03-10 141 views
1

什麼,我基本上是試圖做的是填充的ListView我用彩色TextViews。我想我必須創建一個自定義ArrayAdapter。適配器將接收我的類ColorElement的一組對象。這裏是適配器定製陣列適配器

public class ColoredAdapter extends ArrayAdapter<ColorElement> { 
    private final Context context; 
    private final ArrayList<ColorElement> values; 

    public ColoredAdapter(Context context, ArrayList<ColorElement> values) { 
     super(context, R.layout.simple_list_item_1); 
     this.context = context; 
     this.values = values; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     View view = super.getView(position, convertView, parent); 
     TextView textView = (TextView) view.findViewById(R.id.text1); 

     textView.setText(((ColorElement)values.get(position)).getName()); 
     textView.setTextColor(((ColorElement)values.get(position)).getClr()); 
     return view; 
    } 
} 

代碼這是代碼中,我創建對象的數組,並設置適配器

ArrayList<ColorElement> values = new ArrayList<ColorElement>(); 

     for(int i = 0; i < answerCount; ++i) { 
      int num = randNumber.nextInt(colorList.size() - 1); 
      values.add(colorList.get(num)); 
     } 

     mAnswerList.setAdapter(new ColoredAdapter(this, values)); 

colorList由設有序對象的另一個列表。我試圖隨機化它。我沒有得到任何錯誤,但只需在列表中顯示不出來和我不知道我做錯了什麼線索。

+0

其中是您的自定義行xml文件。 – 2012-03-10 14:54:51

+0

我沒有自定義行xml文件。我今天就開始了android開發,所以請原諒我:P – wirate 2012-03-10 14:56:31

+0

好吧不要擔心和最歡迎在android中關注此鏈接並忽略Imageview http://www.androidhive.info/2012/02/android-custom-listview-with-image-和文本/ – 2012-03-10 14:57:59

回答

5

你無法擁有自己的ArrayAdapter數據工作實例,這實際上是什麼讓它無法工作。在你的構造函數中,你應該用你的列表調用super,之後所有東西都可以工作。問題是ArrayAdapter正在使用其內部數組來報告元素的數量,這與您的values.length不匹配。

public ColoredAdapter(Context context, ArrayList<ColorElement> values) { 
    super(context, R.layout.simple_list_item_1, values); 
} 

在你獲取視圖,而不是values.get,叫getItem(position)