RecyclerVIEwAdapter:
@OverrIDepublic voID onNewDatabaseEntryAdded() { //item added to top of the List notifyItemInserted(0);}public fileVIEwerAdapter(Context context) { super(); mContext = context; mDatabase = new DBHelper(mContext); mDatabase.setonDatabaseChangedListener(this);}
sqlite数据库:
private static OnDatabaseChangedListener mOnDatabaseChangedListener;public static voID setonDatabaseChangedListener(OnDatabaseChangedListener Listener) { mOnDatabaseChangedListener = Listener;}public long addRecording(String recordingname,String filePath,long length) { sqliteDatabase db = getWritableDatabase(); ContentValues cv = new ContentValues(); cv.put(DBHelperItem.ColUMN_name_RECORDING_name,recordingname); cv.put(DBHelperItem.ColUMN_name_RECORDING_file_PATH,filePath); cv.put(DBHelperItem.ColUMN_name_RECORDING_LENGTH,length); cv.put(DBHelperItem.ColUMN_name_TIME_ADDED,System.currentTimeMillis()); long rowID = db.insert(DBHelperItem.table_name,null,cv); if (mOnDatabaseChangedListener != null) { mOnDatabaseChangedListener.onNewDatabaseEntryAdded(); } return rowID;}
监听器:
public interface OnDatabaseChangedListener{ voID onNewDatabaseEntryAdded(); voID onDatabaseEntryRenamed();}
编辑:
我应该提一下,如果我使用NotifyDataSetChanged而不是NotifyItemInserted,那么新项目会立即显示,但RecyclerVIEw不会滚动到列表的顶部. (手动必须向上滚动才能看到它).
解决方法 发生这种情况是因为linearlayoutmanager认为该项目是插入第一项之上的.当您不在列表的顶部时,此行为是有意义的,但我知道当您位于列表顶部时,它是不直观的.我们可能会更改此行为,同时,如果linearlayoutmanager.findFirstCompletelyVisibleItemposition()返回0,则可以在插入项后调用linearlayoutmanager.scrollToposition(0). 总结以上是内存溢出为你收集整理的android – RecyclerView – NotifyItemInsert上没有动画全部内容,希望文章能够帮你解决android – RecyclerView – NotifyItemInsert上没有动画所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)