有没有办法隐藏主要活动中的特定列表视图项?

时间:2015-09-07 06:26:36

标签: android listview android-listview

只是想知道我尝试做的事情是否可行。所以我有一个listview的自定义适配器。它包含一个textview和两个按钮。除非在主活动上按下特定按钮,否则我希望其中一个listview按钮保持隐藏状态。

到目前为止,我有listview按钮执行他们的预期功能,但我不知道我怎么会开始得到我想要的东西。

很抱歉,为了澄清,我有一个完全独立于列表视图的按钮,它始终存在。当我按下此按钮时,我想要切换每个列表视图项目上的按钮的可见性。我能想到的最好的例子就是拥有一个项目列表和一个可以切换每个项目前面的1. 2. 3. 4.按钮的按钮。

6 个答案:

答案 0 :(得分:1)

在适配器中创建一个方法,因为您知道已经点击了主活动中的按钮

public void buttonIsClicked(){ //in your adapter
buttonhide.setVisibility(visibility?View.VISIBLE:View.GONE); 
}

从btnclick上的活动中调用此方法。 像

yourAdapter.buttonIsClicked();

并调用此方法通知适配器有关更改。

yourAdapter.notifyDatasetChanged().

您可以使用界面来收听主要活动中的点击,并在适配器中实现该侦听器

答案 1 :(得分:0)

通过调用代码

将可见性设置为您要隐藏的按钮
buttonhide.setVisibilty(VIEW.GONE);

将其隐藏在活动的oncreate()中,并通过调用代码buttonhide.setVisibilty(VIEW.VISIBLE);

将其显示在按钮点击事件中

答案 2 :(得分:0)

以下是代码

btnView.setVisibility(View.GONE);

答案 3 :(得分:0)

是的,有可能做到这一点。 首先有一个Model类来支持listview数据,并在该模型中保留一个标志,指示是否在该行的数据模型中显示该按钮。在某些条件下更改该模型的标志并在适配器上调用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();
      }

此代码将隐藏第一行中的按钮

答案 4 :(得分: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()

答案 5 :(得分: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);
    }
}