2014-07-17 65 views
0

嗨,朋友,我有一個列表視圖,並從web服務調用獲取內容。在該Web服務調用,也有像我如何隱藏android中的listview項目?

"OGType": "ORG" and "OGType": "GROUP" 

字段如果點擊一個按鈕,列表視圖絕了用「OGType」的項目:「ORG」,並隱藏有「OGType」的項目:「GROUP」。希望你明白我的意思。請任何人幫助我。提前致謝。

+0

創建自定義適配器和更多信息做你想要什麼getView()方法參見(HTTP:// www.vogella.com/tutorials/AndroidListView/article.html#adapterown) –

回答

1

你可以在你的Adapter類的getView方法中做到這一點。這是首部 public View getView(int pos, View convertView, ViewGroup, parent)

在那裏,你可以適當地隱藏元素(S)你想,你知道,使用方法setVisibility()

如需更多幫助,您可以看看here

+0

setVisibility()方法不起作用可能是因爲視圖已經生成。您將看不到列表項目的內容,但仍會看到空白列表項目。 –

+0

這取決於價值,如果你用'GONE'設置你沒有看到任何空白。 –

+0

看看這個答案中的評論:http://stackoverflow.com/a/5043017/1239966 –

0

非hackish的方式將從您的Collection中刪除用於生成列表視圖的項目,然後致電notifyDataSetChanged();

0

您可以創建自定義適配器並以Array或ArrayList的形式將數據傳遞給它(ArrayList在處理自定義適配器時更好)。無論何時您需要添加或刪除ListView中的數據,只需在您的自定義適配器上添加或刪除項目ArrayList並調用notifyDataSetChanged(),它將自動更新ListView。

就你而言,無論何時你點擊一個按鈕,編輯你的ArrayList並調用你的自定義適配器的方法notifyDataSetChanged()就是這樣。如果您對數據進行了任何更改,每次調用此方法時都會看到ListView將自行刷新。希望能幫助到你。

注 - 定製適配器不是強制性的。可以使用任何適配器,例如SimpleAdapter,ArrayAdapter等。

0

您可以使用可見列表和過濾器列表。您應該一直使用「可見」來完成BaseAdpter,然後,您可以將可見指針更改爲其他列表(全部,過濾...)

不要擔心內存,只有指針,只有你每個元素只有一次。

public class MyAdapter extends BaseAdapter { 

    private ArrayList<MyItem> visible; 
    private ArrayList<MyItem> all; 
    private ArrayList<MyItem> filter; 

    public MyAdapter(ArrayList<MyItem> items) { 
     all = items; 
     visible = all; //Set all as visible 
     filter = new ArrayList<Item>(); 
     for (Item i : items) 
      if (i.getType().equals("ORG")) 
       filter.add(i); 

    } 

    //Complete adapter using "visible" 

    public void showOnlyOrg() { 
     visible = filter; 
     notifydatasetchanged(); 
    } 
} 
1

嘗試建立新的數據(僅適用於ORG)到適配器,然後調用

adapter.notifyDataSetChanged();