Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/179.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在使用自定义方式保存数据RecyclerView时进行列表更改动画_Java_Android_List_Android Recyclerview_Android Animation - Fatal编程技术网

Java 如何在使用自定义方式保存数据RecyclerView时进行列表更改动画

Java 如何在使用自定义方式保存数据RecyclerView时进行列表更改动画,java,android,list,android-recyclerview,android-animation,Java,Android,List,Android Recyclerview,Android Animation,我正在制作一个备忘录应用程序,它使用RecyclerView显示数据的ArrayList,其中Note是每个项目的数据类,我使用另一个名为NotesController的类(使用Gson)保存和检索它们。为了更新列表,我现在要做的是将一个新值重新分配给我已设置到列表的NotesAdapter(RecyclerView适配器)。这是我的密码: 注意控制器: public类NotesController{ 私人ArrayList notesList; 私人字符串notesPath; private

我正在制作一个备忘录应用程序,它使用RecyclerView显示数据的
ArrayList
,其中
Note
是每个项目的数据类,我使用另一个名为NotesController的类(使用Gson)保存和检索它们。为了更新列表,我现在要做的是将一个新值重新分配给我已设置到列表的NotesAdapter(RecyclerView适配器)。这是我的密码:

注意控制器:

public类NotesController{
私人ArrayList notesList;
私人字符串notesPath;
private Gson Gson=new Gson();
私有类型=新类型令牌(){
}.getType();
公共NotesController(字符串notesPath){
this.notesPath=notesPath;
if(FileUtil.isExistFile(notesPath)){
getNotesList();
}否则{
createNewList();
}
}
/**
*如果不存在,则创建新列表。仅限内部类使用。
*/
私有void createNewList(){
notesList=新的ArrayList();
saveLatestData();
}
/**
*读取保存的notes.json文件并检索{@link Note}类项的ArrayList。
*@返回一个ArrayList,其中包含保存在notes.json文件中的所有注释
*/
公共数组列表getNotesList(){
字符串json=FileUtil.readFile(notesPath);
notesList=gson.fromJson(json,类型);
返回票据列表;
}
/**
*将对列表{@linkplain NotesController#notesList}的最新更改保存到notes.json文件。仅供内部类使用。
*/
私有void saveLatestData(){
字符串json=gson.toJson(notesList,type);
writeFile(notesPath,json);
}
/**
*将类型为{@link Note}的项添加到列表中,并通过调用{@link NotesController#saveLatestData()}保存数据。
*@param note要添加的{@link note}实例。
*/
公共作废添加(注){
notesList.add(0,note);
saveLatestData();
}
/**
*用列表{@link NotesController#notesList}中类型为{@link Note}的新项替换现有项,并通过调用{@link NotesController#saveLatestData()}保存数据。
*@param position要替换的项目的位置。
*@param note使用{@link note}实例替换旧项。
*当位置超出{@link NotesController#notesList}范围时,@抛出ArrayIndexOutOfBoundsException。
*/
公共无效集(整数位置,注释){
notesList.set(位置、注释);
saveLatestData();
}
/**
*从指定位置获取{@link Note}项。
*@param position要返回的项目的位置。
*@返回指定位置的项目。
*当位置超出{@link NotesController#notesList}范围时,@抛出ArrayIndexOutOfBoundsException。
*/
公共票据获取(整数位置){
返回notesList.get(位置);
}
/**
*从列表中删除指定位置的{@link Note}项。
*@param position要删除的项目的位置。
*当位置超出{@link NotesController#notesList}范围时,@抛出ArrayIndexOutOfBoundsException。
*/
公共无效删除(内部位置){
注释列表。移除(位置);
saveLatestData();
}
/**
*为给定文本的注释列表编制索引,并返回在标题或内容中包含查询的项。
*@param query要搜索的文本查询(小写)。
*@返回其标题或内容包含查询的注释(均已修剪且大小写为小写)。
*/
公共ArrayList搜索(字符串查询){
ArrayList结果=新建ArrayList();
for(注意:getNotesList()){
if(note.getTitle().trim().toLowerCase().contains(query.trim().toLowerCase())| | note.getContent().trim().toLowerCase().contains(query.trim().toLowerCase())){
结果:增加(注);
}
}
返回结果;
}
/**
*将许多int参数转换为int[]数组的简单方法。
*@param对varargs int[]数组进行分类。
*@return int[]来自参数的数组。
*/
公共整数[]类别(整数…类别){
退货类别;
}
}
main活动:(仅相关代码)

public类MainActivity扩展了AppCompatActivity{
私人记事本记事本;
公共静态NotesController NotesController;
私人回收视图说明回收视图;
私有字符串notesDir;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
Fabric.with(this,newanswers(),newcrashlytics());
setContentView(R.layout.activity_main);
...
notesDir=ContextCompat.getDataDir(this.getPath()+“/files/notes.json”;
notesController=新的notesController(notesDir);
LinearLayoutManager layoutManager=新的LinearLayoutManager(此);
NotesRecycleView.setLayoutManager(layoutManager);
updateRecyclerView();
notesAdapter.setOnItemActionListener(新的notesAdapter.ActionListener(){
@凌驾
公共虚线单击(最终整型位置,视图v){
...
}
@凌驾
长点击(最终整型位置,视图v){
AlertDialog.Builder dialog=新建AlertDialog.Builder(MainActivity.this).setTitle(“删除?”).setMessage(“仅用于测试”);
setPositiveButton(“删除”,新建DialogInterface.OnClickListener()){
@凌驾
公共void onClick(DialogInterface,inti){
注意控制器。移除(位置);
updateRecyclerView();
}
});
dialog.show();
}