حذف آیتم از لیست ویو
چهارشنبه, ۵ ارديبهشت ۱۳۹۷، ۱۱:۰۴ ق.ظ
میخواهیم وقتی کاربر برروی یکی از آیتم ها به مدت چندثانیه لمس کرد یک پیغام نمایش دهیم که در صورت تایید کاربر آیتم مورد نظر از لیست حذف شود.
لیست import های لازم :
import java.util.ArrayList; import java.util.Arrays; import java.util.List; import android.os.Bundle; import android.app.AlertDialog; import android.app.ListActivity; import android.content.DialogInterface; import android.content.DialogInterface.OnClickListener; import android.content.Intent; import android.text.Editable; import android.text.TextWatcher; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemLongClickListener; import android.widget.ArrayAdapter; import android.widget.EditText; import android.widget.ListView; import android.widget.Toast;
ابتدا در کلاس MainActivity بعد از خط
String[] str = { "abbas", "ali", "hasan", "sajjad", "ehsan", "farhad", "hamid", "reza" }; ArrayAdapter<String> adapter;
یک لیست از نوع رشته ای با نام arr تعریف می کنیم:
List<String> arr;
داخل متد onCreate رفته و arr را مقداردهی می کنیم:
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); arr =new ArrayList<String>(Arrays.asList(str)); . . .
همچنین آداپترمون رو به شکل زیر تغییر می دیم :
adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, arr);
بعد از پایان متد onListItemClick یک متد جدید به نام removeItemFromList با ویژگی های زیر تعریف می کنیم:
protected void removeItemFromList(int position) { final int deletePosition = position; // نمایش یک پنجره پیغام AlertDialog.Builder alert = new AlertDialog.Builder(MainActivity.this); alert.setTitle("حذف"); alert.setMessage("آیا میخواهید آیتم از لیست حذف شود؟"); alert.setPositiveButton("بله", new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // کارهایی که بعد از کلیک برروی بله انجام می گیره // حذف آیتم از لیست و اطلاع به آداپتر که لیست تغییر کرده اون رو // به روز کن arr.remove(deletePosition); adapter.notifyDataSetChanged(); adapter.notifyDataSetInvalidated(); } }); alert.setNegativeButton("خیر", new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // کارهایی که بعد از کلیک برروی خیر انجام میگیره // حذف پیغام نمایش داده شده dialog.dismiss(); } }); alert.show(); }
خب به متد oncreate بر گردید بعد از پایان
ed.addTextChangedListener . . .
کد زیررا اضافه کنید:
lv.setOnItemLongClickListener(new OnItemLongClickListener() { //وقتی برروی لیست چند ثانیه لمس شود @Override public boolean onItemLongClick(AdapterView<?> arg0, View arg1, int position, long arg3) { //صدا زدن متد حذف آیتم از لیست و دادن موقعیت آیتم مورد نظر در لیست یه متد removeItemFromList(position); return true; } });
کار تمومه به همین راحتی ، حالا کافیه برنامه رو اجرا و برروی یکی از آیتم ها چند ثانیه لمس کنید تا بعد از تایید پیغام نمایش داده شده آیتم از لیست حذف شود
باتشکر از سایت اسفندونه