Android 有没有办法从主活动中隐藏特定的listview项?
只是想知道我想做的事是否可行。因此,我有一个自定义的listview适配器。它包含一个文本视图和两个按钮。我希望其中一个listview按钮保持隐藏状态,除非在主活动上按下特定按钮 到目前为止,我已经让listview按钮实现了预期的功能,但我不知道如何才能开始实现我想要的功能Android 有没有办法从主活动中隐藏特定的listview项?,android,listview,android-listview,Android,Listview,Android Listview,只是想知道我想做的事是否可行。因此,我有一个自定义的listview适配器。它包含一个文本视图和两个按钮。我希望其中一个listview按钮保持隐藏状态,除非在主活动上按下特定按钮 到目前为止,我已经让listview按钮实现了预期的功能,但我不知道如何才能开始实现我想要的功能 抱歉,为了澄清,我有一个按钮与listview完全分离,它总是在那里。当我按下这个按钮时,我想切换每个listview项目上的按钮的可见性。我能想到的最好的例子就是有一个项目列表和一个可以关闭1的按钮。2.3.4.每个项
抱歉,为了澄清,我有一个按钮与listview完全分离,它总是在那里。当我按下这个按钮时,我想切换每个listview项目上的按钮的可见性。我能想到的最好的例子就是有一个项目列表和一个可以关闭1的按钮。2.3.4.每个项目前面都有 通过调用代码设置要隐藏的按钮的可见性
buttonhide.setVisibilty(VIEW.GONE);
将其隐藏在活动的oncreate()
中,并通过调用codebuttonhide.setVisibility(VIEW.VISIBLE)使其显示在按钮单击事件上代码>下面是代码
btnView.setVisibility(View.GONE) 是的,这是可能的。
首先有一个模型类来支持listview数据,并在该模型中保留一个标志,该标志指示是否在该行的数据模型中显示按钮。在特定条件下,更改该模型的标志并在适配器上调用notifyDataSetChanged()
例:
此代码将隐藏第一行中的按钮在适配器中创建一个方法,以便知道您已从以下主要活动中单击了按钮
public void buttonIsClicked(){ //in your adapter
buttonhide.setVisibility(visibility?View.VISIBLE:View.GONE);
}
并在btnclick上从您的活动调用此方法。
像
yourAdapter.buttonIsClicked()代码>
并调用此方法通知适配器更改
yourAdapter.notifyDatasetChanged().
或
您可以使用一个界面来侦听主活动中的单击,并在适配器中实现该侦听器。在数据集中添加一个表示按钮可见性状态的布尔值
public class Dataset {
private boolean visible;
public boolean isVisible() {
return this.visible;
}
public void setVisible(boolean visible) {
this.visible = visible;
}
//..more items
}
boolean visibility = yourDataset.get(position).isVisible();
yourButton.setVisibility(visibility?View.VISIBLE:View.GONE);
然后在适配器的getView
方法中检查此布尔值以显示/隐藏按钮
public class Dataset {
private boolean visible;
public boolean isVisible() {
return this.visible;
}
public void setVisible(boolean visible) {
this.visible = visible;
}
//..more items
}
boolean visibility = yourDataset.get(position).isVisible();
yourButton.setVisibility(visibility?View.VISIBLE:View.GONE);
当单击listview外部的按钮时,更新数据集。并调用yourAdapter.notifyDatasetChanged()
您尝试的是:从包含活动操作适配器中声明的按钮的可见性。简单地说,在活动中放入一个控制变量,并向适配器传递一个参数
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);
}
}
布尔显示按钮;
公共MyAdapter(上下文上下文、列表myList、布尔showButton){
...
this.showButton=showButton;
}
公共视图getView(int位置、视图行视图、视图组父视图){
...
如果(显示按钮){
mButtonTwo.setVisibility(View.GONE);
}否则{
mButtonTwo.setVisibility(View.VISIBLE);
}
}
View.setVisibility(View.X)
Post your custom adapter.OP试图隐藏listview项而不是整个listview。请先阅读问题。