اضافه و کم کردن مقدار به آرایه
سلام دوستان
یک لیست ویو دارم که داخل آداپترش چنتا دکمه برای کم و زیاد کردن محصول قرار دادم، میخوام زمانی که روی دکمه زیاد کردن زده شد داخل آرایه ام اگه مقداری براش بود مقدارشو تغییر بده و اگه هیچ مقداری براش داخل آرایه نبود یکی براش بسازه، هنگامی هم که روی دکمه کم کردن زده شد مقدار رو از آرایه بگیره و کمش کنه تا جایی که به صفر رسید اون مقدار رو از آرایه حذف کنه، یه Structure براش نوشتم که id، name، number رو داخلش قرار میدم، داخل متد fill آداپتر چطوری باید داخل onClick دکمه ها این آرایه رو تعریف کنم؟ خودم داخل کلاس G یه آرایه ساختم اما مقادیر اشتباهی ساخته میشن و درست نمیشن!، ممنون میشم راهنمایی کنید
کدهای زیر رو در متد fill آداپترم نوشتم:
این کدیه که برای onClick دکمه زیاد کردن قرار دادم:
if (numberSell == 0) {
StructB rs = new StructB();
rs.name = item.name;
rs.id = item.id;
rs.number = item.number + 1;
G.rs.add(rs);
} else {
for (StructB struct: G.rs) {
if (struct.id == item.id) {
G.rs.get(G.rs.indexOf(struct)).number = (numberSell + 1);
}
}
}
number = Integer.parseInt(txtCount.getText().toString()) + 1;
txtCount.setText("" + number);
numberSell = Integer.parseInt(txtNumberSell.getText().toString()) + 1;
txtNumberSell.setText("" + numberSell);
}
در کدهای بالا گفتم که اگه تعدادی که setText شده صفر بود یعنی مقداری به آرایه وارد نشده، پس یکی بساز و به آرایه اضافه کن، در غیر اینصورت id اونو پیدا کن در آرایه و تعدادش رو یکی زیاد کن
مشکلی که دارم اینه که هنگامی که روی آیتم های مختلف برای تست کلیک میکنم تعداد یه آیتم دیگه رو زیاد می کنه یا اصلا زیاد نمیکنه
احتمالا باید دنبال چیزی شبیه این باشی. در واقع بهتره که از خود item یک شی بسازی و بعد مقدار دلخواهت رو عوض کنی و بعد داخل همون position که هستی add کنی و بعد برای عدم وجود عنصر تکراری خود postion رو حذف کنی از آرایه، کدش چیزی شبیه زیر میشه. بعدش باید adapter رو notifyDataSetChanged کنی.
StructB rs =item; rs.number ++; G.rs.add(position, rs);
G.rs.remove(position);
کافیه دستور FOR رو به صورت زیر تغییر دهید:
for(int i=0 ; i<G.rs.size() ; i++){
if(G.rs.get(i).id == item.id){ G.rs.get(i).number =(numberSell +1);
}
}
در واقع بجای fro each از for ساده استفاده کنید.
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .