2015-09-07 39 views
1

只是想知道我想要做什麼是可能的。所以我有一個自定義適配器的列表視圖。它包含一個textview和兩個按鈕。我希望其中一個listview按鈕保持隱藏狀態,除非在主活動上按下了特定的按鈕。有沒有辦法隱藏主要活動的特定列表視圖項目?

到目前爲止,我有listview按鈕執行其預期的功能,但我不知道我甚至會開始得到我想要的。

對不起,澄清,我有一個按鈕完全獨立於列表視圖,總是在那裏。當我按下此按鈕時,我想切換每個列表視圖項目上的按鈕的可見性。我能想到的最好的例子是有一個項目列表和一個按鈕,可以關閉每個項目前面的1. 2. 3. 4.。

+0

'View.setVisibility(View.X);' –

+0

安置自己的自定義適配器。 – Vijay

回答

1

按鈕知道你點擊該按鈕,從您的主要活動是這樣

public void buttonIsClicked(){ //in your adapter 
buttonhide.setVisibility(visibility?View.VISIBLE:View.GONE); 
} 
創建適配器的方法

並從btnclick上的活動中調用此方法。 像

yourAdapter.buttonIsClicked();

,並呼籲有關通知更改適配器此方法。

yourAdapter.notifyDatasetChanged(). 

您可以使用一個接口,用於監聽在主要活動的點擊和執行適配器

0

設置能見度在你的活動oncreate()調用代碼

buttonhide.setVisibilty(VIEW.GONE); 

隱藏它去了,你要隱藏的按鈕,使按鈕點擊事件顯示調用代碼buttonhide.setVisibilty(VIEW.VISIBLE);

0

下面是代碼

btnView.setVisibility(View.GONE);

+0

OP不想隱藏listview再次閱讀問題。 – Emil

+0

OP正試圖隱藏listview項目而不是整個listview。請先閱讀問題。 –

0

是的,有可能做到這一點。 首先有一個Model類來支持列表視圖數據並在該模型中保留一個標誌,該標誌指示是否在該行的數據模型中顯示該按鈕。在某些情況下更改該模型的標誌並在適配器上調用notifyDataSetChanged()。

例:

class Model{ 
     String label; 
     boolean showBtn; 
    } 

    in adapter's getView() 

     Model model = list.get(position) 
     if(model.showBtn){ 
     btn.setVisibility(View.VISIBLE); 
     }else{ 
     btn.setVisibility(View.GONE); 
     } 

    in Activity 

     disableButton(){ 
     modelList.get(0).setShowBtn(false); 
     adapter.notifyDataSetChanged(); 
     } 

此代碼會隱藏在第一行

0

該偵聽器添加數據集中的一個布爾值,它代表了可見性狀態的按鈕。

public class Dataset { 
private boolean visible; 

public boolean isVisible() { 
    return this.visible; 
} 
public void setVisible(boolean visible) { 
    this.visible = visible; 
} 
//..more items 
} 

然後在您的getView方法適配器檢查此布爾值以顯示/隱藏按鈕。

boolean visibility = yourDataset.get(position).isVisible(); 
    yourButton.setVisibility(visibility?View.VISIBLE:View.GONE); 

而且當你的列表視圖的按鈕被點擊更新你的數據集。並致電yourAdapter.notifyDatasetChanged()

0

你正在嘗試的是:操縱適配器中聲明的按鈕的可見性從包含活動。很簡單,在活動中放置一個控制變量並將其參數傳遞給適配器。

Boolean mShowButton; //a controlling variable 
void onCreate(Bundle savedInstanceState) { 
    ... 
    mAdapter=new MyAdapter(...,mShowButton); 
    mButton.setOnClickListener(actionShow); 
} 
OnClickListener actionShow = new OnClickListener() { 
    @Override 
    public void onClick(View button) { 
     mShowButton=true; 
     mAdapter.notifyDataSetChanged(); 
     mListView.invalidateViews(); 
    } 
}; 

而在你適配器爲此,

Boolean showButton; 
public MyAdapter(Context context, List<String> myList, Boolean showButton) { 
    ... 
    this.showButton=showButton; 
} 

public View getView(int position, View rowView, ViewGroup parent) { 
    ... 
    if(showButton){ 
     mButtonTwo.setVisibility(View.GONE); 
    }else{ 
     mButtonTwo.setVisibility(View.VISIBLE); 
    } 
} 
相關問題