が付いたArrayList<Color> colorList
リストビューのがありArrayAdapter
ます。このような私のPOJO:
public class Color {
int id;
String name;
//getter setter
}
すべてがサーバーからフェッチされます。したがって、id
各カラーオブジェクトのはid
DBテーブルのに一致します。
私の場合、データベースからのArrayAdapter's
getView
タグを設定id
しています。
holder.imageButton.setTag(item.getId()); //color id from database
holder.imageButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
int id = (Integer) v.getTag();
new DeleteColor(id).execute();
}
});
上記のコードでは、クリックしたアイテムid
を削除のためにサーバーに送信しています
listViewからアイテムを削除する簡単な方法は何ですか?
私が今していることは:
class DeleteColor extends AsyncTask<String, String, String> {
int id;
public DeleteColor (int id) {
this.id = id;
}
@Override
protected String doInBackground (String ... args) {
MyManager.INSTANCE.getService().deleteColor(id, new Callback<Integer>() {
@Override
public void success(Integer id, Response response) {
//loop through the colorlist to find which one to remove
for (int i = 0; i < colorList.size(); i++) {
Color c = colorList.get(i);
if (c.getId() == id) {
colorList.remove(c);
adapter.notifyDataSetChanged();
break;
}
}
}
@Override
public void failure(RetrofitError retrofitError) {
}
});
return "";
}
}
ご覧のとおり、全体colorList
をループして、id
削除したいものを見つけて削除しています。これはこれを達成するための良いアプローチですか?
質問
colorList
削除する必要があるものを見つけるために全体をループしないようにするにはどうすればよいですか。
リストから削除するオブジェクトのIDがあります。そのIDを使用してオブジェクトを取得してから、ArrayListメソッドindexOf(Object object)
を使用してリスト内のオブジェクトのインデックスを検索し、削除します。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加