2017-01-22 3 views
0

У меня есть администратор кнопок (reserveButtons), который я могу отобразить в виде списка. Я выполнил функцию поиска, которая выполняет поиск в моей базе данных и выводит список целых чисел (resultID). Они соответствуют показателям reserveButtons Я хочу отобразить.Поиск listview, но вместо фильтрации, просто надуть и отображать действительные объекты

Проще говоря, я хочу сделать что-то вроде этого, когда кнопка поиска нажата:

ArrayAdapter<ReserveButton> adapter = new MyListAdapter(); 
ListView list = (ListView) myView.findViewById(R.id.resultslist); 
list.setAdapter(adapter); 

for (int result : resultID) { 
    adapter.add(reserveButtons.get(result)); 
} 

Таким образом, для каждого результата, я хочу добавить соответствующую кнопку в окне списка.

Вот частный класс MylistAadapter:

private class MyListAdapter extends ArrayAdapter<ReserveButton> { 
    public MyListAdapter() { 
     super(getActivity(), R.layout.list_item, reserveButtons); 
    } 

    @NonNull 
    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     View itemView = convertView; 
     if(itemView == null) { 
      itemView = gettActivity().getLayoutInflater().inflate(R.layout.list_item, parent, false); 
     } 
      ReserveButton currentButton = reserveButtons.get(position); 

      //the resultItem is the id of the buttons 
      Button butt = (Button) itemView.findViewById(R.id.resultItem); 

      butt.setBackground(currentButton.getImage()); 

     return itemView; 
    } 
} 

Я знаю, что GetView будет просто отображать каждый reserveButton, но я хочу, чтобы код в GetView быть выполнена при добавлении каждого , но позиция не изменяется с позиция = результат в цикле обработки первого блока кода.

//This code is inside MyListAdapter 
    @Override 
    public void add(ReserveButton object) { 

     /* What do I write here to inflate a list_item and give it 
     the background image reserveButton.get(result).getImage() */ 

     super.add(object); 
    } 

Как переопределить добавить метод MyListAdapter, так что я могу добавить reserveButton и изменить его фоновое изображение для каждого результата в resultID список.

Если то же самое можно сделать без , то добавьте способ, сообщите пожалуйста.

P.S: Я не хочу просто перечислять каждые reserveButton, а затем фильтровать их с помощью поиска; Я хочу отображать ТОЛЬКО кнопки, которые пользователь ищет.

ответ

0

Я понял это сам!

В общем, что я сделал, было создать отдельный ArrayList из ReserveButtons и сделать петлю Еогеасп как так:

 int index = 0; 
     for (int result : resultID) { 
      //result is the single ID of an answer 
      answerButtons.add(index,reserveButtons.get(result)); 
      index ++; 
     } 
     populateListView(); 

Так что я в конечном итоге хранить только кнопки, я хочу, чтобы отобразить в answerButtons список. А вот то, что происходит в populateListView()

private void populateListView() { 
    ArrayAdapter<ReserveButton> adapter = new MyListAdapter(); 
    ListView list = (ListView) myView.findViewById(R.id.resultslist); 
    list.setAdapter(adapter); 
    } 

и метод GetView():

public View getView(int position, View convertView, ViewGroup parent) { 
     View itemView = convertView; 
     if(itemView == null) { 
      itemView = getActivity().getLayoutInflater().inflate(R.layout.list_item, parent, false); 
     } 
     //Just set the image of the corresponding answerButton 
     ReserveButton currentButton = answerButtons.get(position); 
     Button butt = (Button) itemView.findViewById(R.id.resultItem); 
     butt.setBackground(currentButton.getImage()); 
     return itemView; 
    } 

Проблема решена. Я не видел никаких ответов на такие проблемы, поэтому этот пост должен сделать его легко доступным для любого новичка, который наткнулся на эту проблему.

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

  • Нет связанных вопросов^_^