【问题标题】:Hide/Destroy a gridview Android隐藏/销毁一个gridview Android
【发布时间】:2015-09-12 17:22:36
【问题描述】:

我的活动中需要有多个网格视图,用户将通过单击按钮进行调用,是否可以在隐藏网格视图后销毁它?

这就是我的想法,

1- 这里用户点击了 button1,所以我将查看 gridview1

button1      button2       button3
---------------------------------
|                                | 
|      Gridview1 visible         |
|                                |
|                                |
---------------------------------

2- 此处用户单击了 button2,因此我将查看 gridview2,因此我需要隐藏/销毁 Gridview1

button1      button2       button3
---------------------------------
|                                | 
|      Gridview2 visible         |
|                                |
|                                |
---------------------------------

3- 最后 button3 将隐藏/销毁所有网格视图

【问题讨论】:

    标签: android gridview


    【解决方案1】:

    我不确定您所说的“破坏”gridview 是什么意思,但您可以通过以下方式隐藏它们:

    button1.setOnClickListener(new View.OnClickListener(){
         @Override
         public void onClick(View v) 
         {
             gridView1.setVisibility(View.VISIBLE);
             gridView2.setVisibility(View.GONE);
         } 
    }); 
    
    button2.setOnClickListener(new View.OnClickListener(){
         @Override
         public void onClick(View v) 
         {
             gridView1.setVisibility(View.GONE);
             gridView2.setVisibility(View.VISIBLE);
         } 
    }); 
    
    button3.setOnClickListener(new View.OnClickListener(){
         @Override
         public void onClick(View v) 
         {
             gridView1.setVisibility(View.GONE);
             gridView2.setVisibility(View.GONE);
         } 
    }); 
    

    或者您可以只保留一个 gridview 并在每次按下按钮时填充其数据,如下所示:

    button1.setOnClickListener(new View.OnClickListener(){
         @Override
         public void onClick(View v) 
         {
             //Populate your new data to ArrayList etc.
             gridview.notifyDataSetChanged();
         } 
    }); 
    
    button2.setOnClickListener(new View.OnClickListener(){
         @Override
         public void onClick(View v) 
         {
             //Populate your new data to ArrayList etc.
             gridview.notifyDataSetChanged();
         } 
    }); 
    
    button3.setOnClickListener(new View.OnClickListener(){
     @Override
     public void onClick(View v) 
         {
             //Empty your data.
             gridview.notifyDataSetChanged();
         } 
    });
    

    【讨论】:

    • 谢谢bigO,所以我在想的是内存消耗,我在想如果我只隐藏可能效率不高的视图,对吧?
    • 但是当您单击按钮 1 并使 gridView1 可见时,您将需要重新创建 gridview1,这是另一个成本
    • 也许保留一个网格视图并更改适配器?
    • 是的,您可以只保留一个 gridview 并在每次单击按钮时填充其适配器。这比保留两个网格视图更节省内存。只需更改适配器的数据并调用 notifyDataSetChanged()。
    猜你喜欢
    • 2011-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多