2012-09-20 38 views
0

我正在嘗試使Button更改所有ListView元素中單個ImageButton的可見性。將自定義適配器列表視圖中的所有元素設置爲可見/不可見

public View getView(final int position, final View convertView, final ViewGroup parent) { 
    View vi=convertView; 
    if(convertView==null) 
    { 
     vi = inflater.inflate(R.layout.custom_row_view, null); 
    } 

/* 
other non important view stuff 
*/ 
if(deleteButton != null){ 
     deleteButton.setVisibility(View.INVISIBLE); 
     deleteButton.setTag(position); 
     deleteButton.setOnClickListener(deleteListener); 
    } 

    return vi; 
} 

public void setVisibility() 
{ 
    if(deleteButton.getVisibility() == View.INVISIBLE){ 
     deleteButton.setVisibility(View.VISIBLE); //Here i want to access all elements 
     Log.i("setVisibility", "Changing to "+ deleteButton.getVisibility() + " element: " + deleteButton.getTag()); 
//Logcat output: Changing to 0 element: 2 


    } else if(deleteButton.getVisibility() == View.VISIBLE){ 
     deleteButton.setVisibility(View.INVISIBLE); 
     Log.i("setVisibility", "Changing to "+ deleteButton.getVisibility() + " element: " + deleteButton.getTag()); 
//Logcat output: Changing to 4 element: 2 

    } 
} 
:我遇到的是找到訪問正確的元素,因爲我沒有一個簡單的方法來訪問自定義適配器(我認爲)的特定元素

相關的代碼部分的問題

東西我在主要活動使用:

CustomAdapter listAdapter; 
ListView listViewLeft; 
ListView listViewRight; 

OnCreate: 
listAdapter=new CustomAdapter(this, link, names, names2, buttonText,context, plistArray); 
listViewLeft.setAdapter(listAdapter); 
listViewRight.setAdapter(listAdapter); 

我的方法調用簡單地使用:

OnClickListener editListener = new OnClickListener() { 
    public void onClick(View view) { 
     listAdapter.setVisibility(); 
     } 
} 

如果任何人有任何想法,那麼我真的很感激,謝謝:)

回答

0

這是一個非常簡單的修復。我忘了打電話:

listAdapter.notifiDataSetChanged(); 

但每次調用該方法中,getView方法被調用,所以我只是說這在自定義適配器getView

if(deleteButton != null){ 
     if(deleteButton.getVisibility() == View.INVISIBLE){ 
      deleteButton.setVisibility(View.VISIBLE); 
     } else if(deleteButton.getVisibility() == View.VISIBLE){ 
      deleteButton.setVisibility(View.INVISIBLE); 
      } 
     deleteButton.setTag(position); 
     deleteButton.setOnClickListener(deleteListener); 
    } 

而在XML默認值設置爲可見。 我不確定這是否是最有效的方式,但至少可以達到預期效果:)

0

您需要存儲項目的索引與適配器中的不可見按鈕或可見性值,並使用它(只需設置可見性到每個視圖/ convertView )在getView()。它與ListView方面的查看重用有關。
參考my answer here得到如何解決它的想法和this Romain Guy Google I/O talk ListView的更多細節

相關問題