2015-09-07 37 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); 
    } 
} 
相关问题