我有一个用于Android的笔记应用程序,其中为用户保存的每个笔记增加了LinearLayout
“笔记卡”。它们的父级是LinearLayout
内的ScrollLayout
(这似乎是使它工作的唯一方法)。这些卡片由标题,正文,位置标签和创建时间组成。
我想知道是否可以构建一种方法来查看位置,日期或标题并按顺序对布局进行排序?
我一直在寻找List Views,以确定它是否是更好的父级,但是我仍然无法确定我是否能够对ListView
中的布局进行排序。
答案 0 :(得分:0)
我建议使用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适配器中,您可以拥有一个TreeSet的NoteData对象。 TreeSet使用Comparable接口(如果有)自动为您订购商品(这就是我在上面实现的原因)。 TreeSet默认情况下按升序排序,但是您可以将Collections.reverseOrder()
传递给TreeSet构造函数以使其降序。
在我的示例中,我按标题排序。您可以在编译之前更改要比较的变量,但是我所做的不支持动态排序。为此,您将需要进行一些Google搜索,以获取有关如何对列表进行动态排序的示例(为此,您应该使用ArrayList或Set而不是TreeSet)或可以为您执行此操作的库。
答案 1 :(得分:0)
如果需要LayoutInflater。假设您的示例XML位于文件custom_layout.xml中:
LayoutInflater充气器= LayoutInflater.from(上下文); RelativeLayout layout =(RelativeLayout)inflater.inflate(R.layout.custom_layout,null,false);
LinearLayout linear =(LinearLayout)findViewById(R.id.myLayout); linear.addView(layout);
看看Droid:如何以编程方式重新排列线性布局的内容?并立即在LinearLayout中获取所有子视图