【问题标题】:ListView that shows multiple columns of one row instead of multiple rowsListView 显示一行的多列而不是多行
【发布时间】:2013-09-23 20:01:02
【问题描述】:

第 1 行的列表视图

“第 1 列”

“第 2 栏”

“第 3 栏”

有没有办法在一行中显示多列。现在我可以在列表视图中列出多行。我正在查看偏好活动,我想实现类似的目标。我希望每一列都是可点击的。

编辑:一些澄清。

目前我有一个列表视图,用于填充数据库中的每一行。

列表视图

“第 1 行”

“第 2 行”

“第 3 行”

等等……

当我单击 ListView 上的任何这些项目时,例如“第 2 行”,它会调用一个活动,将行中的所有列列出到一个文本视图中。我想要实现的是以列表视图的方式列出每一列。因此,当单击“第 2 行”时,它应该会将我带到这样的视图。

显示:

“第 1 列”

“第 2 栏”

“第 3 栏”

【问题讨论】:

    标签: android listview


    【解决方案1】:

    好吧,根据您的编辑,也许您正在寻找“ExpandableListView”?

    【讨论】:

    • 有点。单击该行时,它希望它打开一个新视图。
    • 我想我会试试这个。
    【解决方案2】:

    我不确定您要实现什么,但您可以使用水平 LinearLayout 作为您已有的垂直 LinearLayout 中的一行。您是否需要将整个列作为单个实体进行点击?如果您只需要在 PreferenceActivity 等列中对齐的可点击元素,我会改用 GridLayout。

    【讨论】:

      【解决方案3】:

      使用gridView 来做这样的事情:

      GridView gridview = (GridView) findViewById(R.id.gridview);
      gridview.setAdapter(new ImageAdapter(this)); // see 
      
      gridview.setOnItemClickListener(new OnItemClickListener() {
          public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
      
              //here, switch position, set the row & column content
      
          }
      });
      

      我认为这是最适合您的方式。

      【讨论】:

        【解决方案4】:

        你需要搜索的是Horizo​​ntalListView。

        这是某人制作的自定义控件。太受欢迎了。

        所有安卓开发者都使用它。

        您可以在 Internet 上找到一个 woking 示例。

        你需要一些时间来理解它。因为在某些时候你需要修改它。作为项目的点击监听器,它需要一些技巧来实现。

        祝你好运。

        【讨论】:

          【解决方案5】:

          您可以通过将行的所有元素包装在 LinearLayout 中来实现类似的效果,并为其指定 android:weightSum。给每个元素一些android:layout_weightandroid:layout_width="0dp"。它工作得很好,虽然不是最优雅..

          【讨论】:

            【解决方案6】:

            假设你想做这样的事情:


            列表视图:

            第 1 行

            “列”“列”“列”

            第 2 行

            “列”“列”“列”

            第 3 行

            “列”“列”“列”


            并希望每一列都可以点击,而行不会“吸收”整个点击。

            好吧,您可以使用表现更好的“表格布局”。

            但是,您仍然可以通过在列表视图上手动执行此操作,如下所示:

            1) 创建一个适配器,它可以水平吐出三个视图(“column”“column”“column”)的行布局(在 getView() 方法上)

            2) 确保在 XML 行上将三个视图中的每一个都设置为 clickable="true",并使用 setOnClickListener 为每个视图注册一个监听器。

            3) 禁用他们的父布局点击你的 xml。

            4) 不要为列表视图对象注册 onItemClickListener(或注册只返回 false 的 onItemClickListener,将触摸流到它下面的视图),并在列表视图上使用创建的适配器。你应该得到想要的效果。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2020-03-25
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2011-07-02
              相关资源
              最近更新 更多