2016-02-18 49 views
0

我做了一个应用程序的衣服。我将所有衣服都显示在分类列表中。当用户点击列表项目时,他们可以删除它或编辑它。当一个项目被删除,列表不会刷新,我必须出去,然后再次进入特定的列表,看看没有了。Android中的删除和刷新列表

我想自动刷新列表。我需要一个意图吗?或者还有其他方法吗?

Details.java

ImageButton deleteButton = (ImageButton) findViewById(R.id.delete_clothes); 
deleteButton.setOnClickListener(new View.OnClickListener() { 

    @Override 
    public void onClick(View v) { 
     if (handler.deleteCloth(String.valueOf(extras.getInt("id")))) { 
      Toast.makeText(getApplicationContext(), "Cloth has been deleted.", Toast.LENGTH_SHORT).show(); 
     } 
    } 
}); 

Dresses.java

private void loadClothesData() { 

    clothes = handler.readAllDresses(); 
    CustomAdapter adapter = new CustomAdapter(this, clothes); 
    lv.setAdapter(adapter); 
    lv.invalidateViews(); 
    adapter.notifyDataSetChanged(); 
    for (Clothes c : clothes) { 
     String record = "ID=" + c.getID() + " | Category=" + c.getCategory() + " | " + c.getSize(); 
     Log.d("Record", record); 
    } 
} 

Can anyone help? 
+0

我们可以看到deleteCloth()的代码吗? – JCutting8

+0

public Boolean deleteCloth(String id){ SQLiteDatabase db = this.getWritableDatabase(); return db.delete(SQLITE_TABLE,KEY_ROWID +“=”+ id,null)> 0; } – user5805577

回答

0

在您的自定义适配器呼叫this.notifyDataSetChanged();在其中执行删除功能和删除ArrayList中该元素被设置为该适配器。

我的意思是从您传递给适配器,然后调用notifyDatasetChanged()数组列表中删除删除的值。

希望这会有所帮助。

+0

我的删除方法在databaseHandler中,所以我不明白你在说什么 – user5805577

+0

我认为你的数据库处理方法正在返回一个arrayList的衣服,所以将更新的arraylist传递给适配器并在列表上执行notifyDataSetChanged。 – Cool7

+0

哦,我明白了。谢谢你,我会尽力的! – user5805577

0

您正在删除项目单击侦听器中的对象。 所以在那。

adapter.refreshlist(array after removing); 
adapter.notifyDataSetChanged(); 

现在在Adapter类中。

Public void refreshlist(Arraylist array){ 
    this.oldarray=array; 
} 

这会做功。