我想通过Google Keep创建类似的内容。
Keep的屏幕截图:
https://s31.postimg.org/o4wpmxj0b/photo_2016_06_28_22_05_18.jpg https://s31.postimg.org/6tngsmtrf/photo_2016_06_28_22_05_25.jpg
我已经创建了一个RecyclerView及其Adapter / ViewHolder,其中包含一个包含TextView和Checkbox的项目列表。
我真的想得到最后一个空项目,以便向循环器视图添加无穷无尽的新项目。
我想到了这一点,我最终得到的唯一想法就是在结束后手动添加RecyclerView的行OUT,并使其看起来与其项目完全相同。
但当然,它似乎并不是一件好事。有没有其他方法可以做到这一点?
以下是我的代码,我使用的是Firebase适配器,因为我需要在线同步数据,但我认为不存在差异。
private void initTaskList() {
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
recyclerView.setHasFixedSize(true);
subjectAdapter = new FirebaseRecyclerAdapter<String,TaskHolder>
(String.class, R.layout.item_checkbox_text, TaskHolder.class, FirebaseUser.getTasksRef(eventID)) {
@Override
protected void populateViewHolder(TaskHolder viewHolder, String taskInfo, int position) {
viewHolder.taskText.setText(taskInfo);
}
};
recyclerView.setAdapter(subjectAdapter);
}
static class TaskHolder extends RecyclerView.ViewHolder {
private TextView taskText;
private CheckBox taskCheckbox;
public TaskHolder(View itemView) {
super(itemView);
taskText = (TextView)itemView.findViewById(R.id.task_text);
taskCheckbox = (CheckBox)itemView.findViewById(R.id.task_checkbox);
}
}
答案 0 :(得分:0)
我不记得我头顶的确切位置,但我认为在你定义更大的R.layout.item_checkbox_text的xml中,你可以添加所需的&#39; last&#39 ;使用自己的xml标记在recyclerview之后或之内排。您可以将其设置为recyclerview之外的单独元素,也可以作为一行。由于您在ViewHolder中定义了列表的行将映射到R.id.task_text和R.id.task_checkbox,因此您应该能够将其放在最后而不会多次显示。
编辑:举个例子,这里有相同的概念,但有一个列表视图的标题:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<include layout="@layout/msgqueue_header"
android:id="@+id/include" />
<ListView android:id="@id/android:list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:drawSelectorOnTop="false"
android:fadeScrollbars="false"/>
</LinearLayout>
如果我将其包含在ListView之后但在同一个LinearLayout中,则它将作为页脚使用。
然后,更棘手的部分将定义最后一行的点击行为,以便将新数据正确添加到适配器并重新填充视图。如果正确调用notifyDatasetchanged(),假设您可以访问附加到存储任务信息的适配器的基础数据集,则可能相对简单。
答案 1 :(得分:0)
我相信你所需要的只是一个带有页脚的recyclerView.Here是一个库,可以帮助你将页脚添加到endlessRecyclerView https://github.com/willblaschko/header-footer-recycler-view
此库允许您向recyclerView添加许多页眉和页脚。
现在创建一个页脚布局(它可以是任何类型的视图,如edittext或进度条)
<ListView android:id="@id/android:list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"/>
<-----Your Footer view defined here---->
现在通过它的id找到footerView并为它设置一个onclickListener()并通过
将它作为页脚添加到recyclerView中 mAdapter.addFooter(FooterView)
您可以在稍后阶段通过
删除它mAdapter.removeFooter(FooterView);
希望它有所帮助。