2015-01-31 2 views
0

Я пытаюсь заполнить список с помощью объектов, сделанных на заказ. Я использую адаптер для использования класса listview. Ниже приведен код, который я использую для использования адаптера.Проблема с заполняющим списком

adapter = new SearchListAdapter(this, values); 
    expListView = (ListView) findViewById(R.id.SearchList); 
    setListAdapter(adapter); 

В классе SearchListAdapter у меня есть следующий код:

public class SearchListAdapter extends ArrayAdapter<String> 
{ 
    private Context context; 
    private ArrayList<String> values; 
    public SearchListAdapter(Context context, ArrayList<String> UsernameValues) { 
     super(context, R.layout.search_contact, UsernameValues); 
     this.context = context; 
     this.values = UsernameValues; 
    } 
    @Override 
    public View getView(int position, View convertView, ViewGroup parent) 
    { 
     LayoutInflater inflater = (LayoutInflater) this.context 
       .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     View rowView = inflater.inflate(R.layout.search_contact, parent, false); 

     TextView textView = (TextView) rowView.findViewById(R.id.firstLine); 
     for(String Index : values) 
     { 
      textView.setText(Index); 
     } 
     return rowView; 
    } 
} 

Я могу видеть, что setListAdapter работает (я предполагаю), так как она проходит информацию в SearchListAdapter, но когда getView пытается заполнить список, он просто вводит последнее значение String из ArrayList в каждом отдельном элементе списка. Что мне не хватает, чтобы сделать так, чтобы каждый элемент соответствовал значению в ArrayList? Любая помощь приветствуется, спасибо.

ответ

0

Ваш код

for(String Index : values) 
{ 
    textView.setText(Index); 
} 

фактически итерация ваши полные данные List и установки каждого значения на каждой итерации. Итак, после последней итерации каждые textView осталось с последним значением в поддержке вашего адаптера List.

Вам необходимо установить только то значение, которое соответствует текущей строке position вашего ListView в вашем списке UsernameValues.

textView.setText(values.get(position)); 
+0

Ах да, это сделал трюк, спасибо вам большое. – David

Смежные вопросы