2012-03-10 1 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-файл строки. –

+0

У меня нет специального XML-файла строки. и я начал разработку Android сегодня, поэтому простите меня: P – wirate

+0

ok Не волнуйтесь и больше всего Добро пожаловать в android Следуйте по этой ссылке и игнорируйте Imageview http://www.androidhive.info/2012/02/android-custom-listview-with-image- and-text/ –

ответ

5

У вас нет собственного экземпляра данных для работы ArrayAdapter, это на самом деле то, что делает его неработоспособным. В вашем конструкторе вы должны позвонить супер с вашим списком, после чего все будет работать. Проблема в том, что ArrayAdapter использует свой внутренний массив, чтобы сообщить количество элементов, которое не соответствует вашим значениям.length.

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

По вашему мнению ПОЛУЧИТЬ, вместо values.get, вызовите getItem(position).