2014-01-13 48 views
0

我如何顯示和隱藏listview中listview的行內的一些imagebuttons? 我列出了一些軟件包列表,並希望顯示按鈕,如安裝和卸載。但是,當安裝一個軟件包時,只顯示卸載按鈕。如果點擊卸載,我想隱藏卸載按鈕並顯示安裝按鈕。 我引用的每個行的循環是這樣的:動態顯示和隱藏列表視圖內的imagebuttons

v = vi.getAdapter().getView(i, null, null);

和參考按鈕這樣

ImageButton ib = (ImageButton)v.findViewById(R.id.descargar); 
      ib.setVisibility(View.VISIBLE); 

什麼都沒有發生。有什麼建議?謝謝。

回答

2

繼承ArrayAdapter類並覆蓋getView函數。 當顯示行時,始終調用getView函數。

創建類行:

public class MyRow { 
    public boolean installed; 
} 

實施ArrayAdapter:

public class MyAdapter<MyRow> { 

@Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
    LayoutInflater inflater = (LayoutInflater) context 
     .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    View rowView = inflater.inflate(R.layout.rowlayout, parent, false); 
    // get actual row item. 
    MyRow item = (MyRow)getItem(position); 
    ImageButton ib = (ImageButton)v.findViewById(R.id.install); 
    ImageButton uib = (ImageButton)v.findViewById(R.id.uninstall); 

    if (item.installed) { 
     ib.setVisibility(View.VISIBLE); 
     uib.setVisibility(View.GONE); 
    } else { 
     ib.setVisibility(View.GONE); 
     uib.setVisibility(View.VISIBLE); 
    }  

    return rowView; 
    } 
} 

檢查本教程就如何落實ListAdapter以及如何回收利用的意見。 http://www.vogella.com/tutorials/AndroidListView/article.html

+0

第一次使用。當點擊一個按鈕時,如何刷新listview以更新imagebuttons?例如,當用戶單擊安裝按鈕時。謝謝。 – borja

+0

我回復了我自己 - > getListView.invalidateViews()很棒! – borja

+0

如果數據集已更改,將調用此函數:adapter.notifyDatasetChanged(); – bvarga

0

我不知道什麼是你的代碼錯誤,但試試這個:

View v = getListView().getChildAt(i); 

然後繼續做你做的事:

ImageButton ib = (ImageButton)v.findViewById(R.id.descargar); 
     ib.setVisibility(View.VISIBLE); 

這爲我工作。希望這個幫助。

+0

我試過但不起作用。我認爲imagebutton中的屬性是可以的。但我如何強制重新繪製新屬性的行?謝謝。 – borja