Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/198.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 有没有办法从主活动中隐藏特定的listview项?_Android_Listview_Android Listview - Fatal编程技术网

Android 有没有办法从主活动中隐藏特定的listview项?

Android 有没有办法从主活动中隐藏特定的listview项?,android,listview,android-listview,Android,Listview,Android Listview,只是想知道我想做的事是否可行。因此,我有一个自定义的listview适配器。它包含一个文本视图和两个按钮。我希望其中一个listview按钮保持隐藏状态,除非在主活动上按下特定按钮 到目前为止,我已经让listview按钮实现了预期的功能,但我不知道如何才能开始实现我想要的功能 抱歉,为了澄清,我有一个按钮与listview完全分离,它总是在那里。当我按下这个按钮时,我想切换每个listview项目上的按钮的可见性。我能想到的最好的例子就是有一个项目列表和一个可以关闭1的按钮。2.3.4.每个项

只是想知道我想做的事是否可行。因此,我有一个自定义的listview适配器。它包含一个文本视图和两个按钮。我希望其中一个listview按钮保持隐藏状态,除非在主活动上按下特定按钮

到目前为止,我已经让listview按钮实现了预期的功能,但我不知道如何才能开始实现我想要的功能


抱歉,为了澄清,我有一个按钮与listview完全分离,它总是在那里。当我按下这个按钮时,我想切换每个listview项目上的按钮的可见性。我能想到的最好的例子就是有一个项目列表和一个可以关闭1的按钮。2.3.4.每个项目前面都有

通过调用代码设置要隐藏的按钮的可见性

buttonhide.setVisibilty(VIEW.GONE);
将其隐藏在活动的
oncreate()
中,并通过调用code
buttonhide.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。请先阅读问题。