2017-01-22 44 views
0

我有一個按鈕(reserveButtons)ArrayList我可以在列表視圖中顯示。我做了一個搜索功能,它在我的數據庫中搜索並輸出一個整數列表(resultID)。它們對應的索引號爲reserveButtons我想要顯示。搜索列表視圖,而不是過濾,只是膨脹並顯示有效項目

簡單地說,我要的是點擊搜索按鈕時,做這樣的事情:

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的代碼時,我添加的每個被執行按鈕,但位置不會改變,因爲位置 = 結果在第一個代碼塊的for循環中。

//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

我想出了自己!

基本上,我所做的就是創建ReserveButtons單獨ArrayList和做foreach循環,像這樣:

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

問題解決了。我還沒有看到任何類似問題的答案,所以這篇文章應該可以讓任何遇到這個問題的新手輕鬆實現谷歌搜索。

相關問題