繁体   English   中英

有没有一种方法可以在Android Studio中以编程方式对线性布局进行排序?

[英]Is there a way to programmatically sort Linear Layouts in Android Studio?

我有一个用于Android的笔记应用程序,其中为用户具有的每个已保存笔记增加了LinearLayout “ notecard”。 它们的父级是ScrollLayoutLinearLayout (这似乎是我可以使其正常工作的唯一方法)。 这些卡片由标题,正文,位置标签和创建时间组成。

我想知道是否可以构建一种方法来查看位置,日期或标题并按顺序对布局进行排序?

我一直在查看“ 列表视图”以查看它是否是更好的父级,但是我仍然无法确定我是否能够对ListView的布局进行排序。

我建议使用RecyclerView。 您需要为其设置一个适配器,但是管理多个项目更容易(您可以对其重新排序,添加滑动或按住操作等)。 您还可以使用诸如TreeSet之类的项目对它们进行排序。

您可能需要一个数据类作为注释,所以类似这样:

class NoteData implements Comparable {
    public String title;
    public String text;
    public long timeInMs;
    //etc

    @Override
    public int compareTo(NoteData other) {
        return title.compareTo(other.title);
    }

}

然后,在您的RecyclerView适配器中,您可以拥有一个NoteData对象的TreeSet。 TreeSet使用Comparable接口(如果有)自动为您订购商品(这就是我在上面实现的原因)。 TreeSet默认情况下按升序排序,但是您可以将Collections.reverseOrder()传递给TreeSet构造函数以使其降序。

在我的示例中,我按标题排序。 您可以在编译之前更改要比较的变量,但是我所做的不支持动态排序。 为此,您需要进行一些Google搜索,以获取有关如何对列表进行动态排序的示例(为此,您应该使用ArrayList或Set而不是TreeSet),或者可以为您提供帮助的库。

Google的RecyclerView教程
另一个教程

如果需要LayoutInflater。 假设您的示例XML位于文件custom_layout.xml中:

LayoutInflater inflater = LayoutInflater.from(context); RelativeLayout layout =(RelativeLayout)inflater.inflate(R.layout.custom_layout,null,false);

LinearLayout linear =(LinearLayout)findViewById(R.id.myLayout); linear.addView(layout);

看看Droid:如何以编程方式重新排列线性布局的内容? 并一次在LinearLayout中获取所有子视图

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM