2015-09-04 164 views
1

当我加入新的项目,我打电话方法notifyItemInserted()在RecyclerView和动画

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

,并希望看到添加的项目动态的,但只有在recyclerView前一个项目可以是动画。我试图改变位置(位置+ 1)或(位置-1),但它没有帮助。 活动代码:

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); 
} 

请给我一个提示,聪明的人。

回答

3

你是不是在你的addItem()方法添加的项目。 您将一个完整的新列表分配给您的适配器。

改变你的addItem方法是这样的:

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

要将项目添加到您的列表视图电话:

adapter.addItem("test", 0); 

也许你应该看看SortedList class,它可以使您的生活更轻松。

在这里看到的文档: https://developer.android.com/reference/android/support/v7/util/SortedList.html

+0

不幸的是,它没有帮助我。 –

+0

你点击方法有几个错误,你的代码也不完整。也许你应该看看一个recyclerview教程。 –

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

使用本

+0

而这对我也没有帮助。 :( –

0

这是为时已晚。但是,我发现在所有'for'函数中,您将第一个参数设置为1,而不是0.否则,必须将第二个条件设置为'='而不是'<'。希望这套动画是正确的。

相关问题