حذف آیتم از لیست ویو
من از لیست ویو سفارشی استفاده کردم و حالا میخوام دیتایی که حذف میکنم از لیست هم حذف بشه.لیست ویو من ArrayList نمیگیره به عنوان ورودی.یک ارایه میگیره. برای حذف ایتم رو از arraylist مورد نظر remove میکردن حالا من که ارایه دارم باید چیکار کنم؟
class CustomAdapter extends ArrayAdapter<String> {
Context context;
int image[];
String[] title;
String[] description;
String[] m = {"تاریخ : 1395/3/5", "تاریخ : 1395/3/5", "تاریخ : 1395/3/5", "تاریخ : 1395/3/5"};
public CustomAdapter(Context context, String[] titles, int[] imgs, String[] desc) {
super(context, R.layout.single_row_bazdid, titles);
this.context = context;
this.image = imgs;
this.title = titles;
this.description = desc;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View row = inflater.inflate(R.layout.single_row_bazdid, parent, false);
ImageView myimage = (ImageView) row.findViewById(R.id.imageViewe);
TextView mytitle = (TextView) row.findViewById(R.id.textViewe);
TextView mydesc = (TextView) row.findViewById(R.id.textView2e);
TextView erjakonande = (TextView) row.findViewById(R.id.textView0e);
myimage.setImageResource(image[position]);
mytitle.setText(title[position]);
mydesc.setText(description[position]);
erjakonande.setText(m[position]);
return row;
}
}
del.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
DataBase db = new DataBase(Code_DarHalBazdid.this,"MELK_TBL");
try
{
db.open();
db.DeleteCode(Data.get(_position).get(0));
adapter.notifyDataSetChanged();
db.close();
}catch (Exception e)
{
Toast.makeText(getApplicationContext(),e.toString(),Toast.LENGTH_LONG).show();
}
}
});
یه راهش اینه که یک شما دوباره آرایه خودتونو مقدار دهی کنی و بعد از notifyDAtaSetChenged استفاده کنید .
مثلا من برای آرایه خودم این کارو کردم
myArray.clear();
if (G.numberDoreh != 0) {
for (int i = 0; i < G.numberDoreh; i++) {
String str = G.paramsDoreh.get("title" + i).toString();
myClassForArray doreh = new myClassForArray();
myArray.NameDore = str;
Doreh.add(myArray);
Log.i(TAG,"name doreh :"+MainStartup.Doreh.get(i)+" i: "+ i);
}
} else {
Log.i("MainStartup", "G.numberDore is empty : ");
}
adapter.notifyDataSetChanged();
ولی این یک مشکلی داره که وقتی از بالا لیست ویو حذف میکنم اولین گزینه درست حذف میشه و درست چیده میشه اما وقتی دومین گزینه رو حذف میکنم درست حذف میکنه ولی درست نمیچینه فیلد ها رو و از این جا به بعد چون درست نمایش نمیده ممکنه اشتباهی حذف کنه و مشکل ساز بشه(که احتمالا این هم از تابع fill منه که لیست ویو منو میچینه که اگه برا شما درست باشه احتمالا درست کار میکنه ) امیدوارم بتونید ازش استفاده کنید .
اگر هم به این مشکل بالا که گفتم خوردید و راهی براش پیدا کردید ممنون میشم به اشتراک بزارید
البته یک راه راحت تر اینه که از (adapter.remove(item استفاده کنید که در این روشم من مشکلاتی مثل درست نمایش ندادن رو داشتم(که احتمالا این هم از تابع fill منه که لیست ویو منو میچینه که اگه برا شما درست باشه احتمالا درست کار میکنه )
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .