【问题标题】:Dynamically change to Listview frm Gridview从 Gridview 动态更改为 Listview
【发布时间】:2015-08-30 13:28:35
【问题描述】:

在片段中的用户单击视图后,我想将视图从 gridview 更改为 listview。

但我无法做到这一点。 在 google Quora 和 SO 上搜索了很多,但没有找到任何解决方案

这是我的片段代码

public class FragmentAlbum extends Fragment  {

@Override
public View onCreateView(final LayoutInflater inflater, final ViewGroup container,Bundle savedInstanceState) {
   root = (ViewGroup) inflater.inflate(R.layout.album,container, false);


    activity = getActivity();
        lv=(GridView) root.findViewById(R.id.gridview);
        lv.setAdapter(adaptor);

        lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                @Override
                        public void onItemClick(AdapterView<?> parent, View view,int position, long id) {

          root = (ViewGroup) inflater.inflate(R.layout.album_list,container, false);
         listview=(ListView) root.findViewById(android.R.id.list);

                  listview.setAdapter(adaptor1);    
                  break;

         }

             }}
);

        return root;
}

。 当我单击视图时仍保留在 Gridview 初始视图不会关闭。

相册是gridview布局。

album_list 是列表视图布局。

我没有收到任何错误,但逻辑上它不起作用。

谁能告诉我我的错误?

提前感谢

【问题讨论】:

    标签: android listview gridview fragment


    【解决方案1】:

    您可以为此使用 recyclerview。

    将layoutmanager设置为gridview的gridlayout manager和listview的linearlayout manager。

    根据条件使用你的逻辑。

    【讨论】:

    • 嘿@Shashank Garg 你能告诉我如何更改gridview 中的布局吗?我的意思是说我对gridview和listview有不同的布局。
    【解决方案2】:

    您可以使用的一个选项是使用 GridView 并根据状态动态更改列数。 GridView 有一个 numColumns 属性,您可以在运行时更改该属性,然后通过在适配器上调用 notifyDataSetChanged 来应用。

    【讨论】:

    【解决方案3】:

    您可以使用RecyclerView 并根据您的列数将ListView 更改为GridView,如下所示,与其他帖子相比,这非常容易。

    private void setLayoutManager() {
        if (mColumnCount <= 1) {
            mColumnCount = 1;
            recyclerView.setLayoutManager(new LinearLayoutManager(context));
        } else {
            recyclerView.setLayoutManager(new GridLayoutManager(context, mColumnCount));
        }
    }
    

    【讨论】:

      【解决方案4】:

      如果您想以编程方式将 GridView 样式更改为 ListView 样式,并将 ListView 样式更改为 GridView。然后只需以编程方式更改 gridview 的 NO-OF-COLUMNS 值。 喜欢这里

        switchIV.setOnClickListener(new OnClickListener()
          {
              public void onClick(View arg0) 
              {
      
                  if(style==0)
                  {
      
                      //Change gridview to listview style
                      gridview.setNumColumns(1);
                      Update_with_ListView_Style();
                      style=1;
      
                  }
                  else
                  {
                      //change gridview back to gridview style with 3 columns
                      gridview.setNumColumns(3);
                       Update_with_GridView_Style();
                       style=0;
      
                  }
              }
      
          });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-04-27
        • 1970-01-01
        • 1970-01-01
        • 2010-10-30
        • 1970-01-01
        相关资源
        最近更新 更多