sugarapp sugar satyan library ejemplo android animation android-recyclerview custom-adapter

android - sugar - notifyItemInserted() en RecyclerView y animación



sugar orm ejemplo (2)

Cuando estoy agregando un nuevo artículo, estoy llamando al método

public void addItem(ArrayList<ArrayList<String>> arrayList, int position){ this.arrayList=arrayList; notifyItemInserted(position); }

y espera ver el elemento agregado animado, pero solo el elemento anterior en recyclerView puede ser animado. Traté de cambiar de posición como (posición + 1) o (posición-1), pero no ayuda. Código de la actividad:

private void showDialog(final String table_name) { ... final Cursor c = db.rawQuery("SELECT * FROM ''"+table_name+"''",null); final String mas[]=c.getColumnNames(); c.close(); final List<EditText> list = new ArrayList<>(); for (int m = 1; m < mas.length; m++) { list.add(new EditText(this)); list.get(m-1).setHint(mas[m]); linearLayout.addView(list.get(m-1)); } alert.setView(linearLayout); alert.setPositiveButton("OK", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { ArrayList<String> arrayList=new ArrayList<String>(); for (int i=0;i<list.size();i++) arrayList.add(list.get(i).getText().toString()); try { arrayList=AESEncryption.encrypt2(arrayList); ContentValues contentValues=new ContentValues(); for (int i=1;i<mas.length;i++){ contentValues.put(mas[i],arrayList.get(i-1)); } db.insert(table_name, null, contentValues); adapter.addItem(startDecrypt(),adapter.getItemCount()); } catch (BadPaddingException e) ... }); ... alert.show(); } ... private void fillListView() throws GeneralSecurityException, IOException, ClassNotFoundException { dbHelper = new DBHelper(this); dbHelper.setFILENAME(getIntent().getExtras().getString("categoryName")); db = dbHelper.getWritableDatabase(); dbHelper.createTable(db); Cursor c = db.rawQuery("SELECT * FROM ''"+FILENAME+"''",null); String mas[]=c.getColumnNames(); String[] mas2 = Arrays.copyOfRange(mas, 1, mas.length); c.close(); adapter=new RVAdapter(startDecrypt(),mas2,PasswordManagerActivity.this,FILENAME, AESEncryption); rv.setAdapter(adapter); rv.setHasFixedSize(true); }

Por favor, dame un consejo, hombres sabios.


No está agregando un elemento en su método addItem() . Usted asigna una nueva lista completa a su adaptador.

Cambie su método addItem a algo como esto:

public void addItem(String item, int position) { this.arrayList.add(position, item); notifyItemInserted(position); }

Para agregar un elemento a su llamada de vista de lista:

adapter.addItem("test", 0);

Tal vez deberías mirar la SortedList class , podría hacerte la vida más fácil.

Consulte los documentos aquí: https://developer.android.com/reference/android/support/v7/util/SortedList.html


public void addItem(String item, int position){ yourList.add(position, item); notifyDataSetChanged(); }

utilizar esta