'My array was not working properly. When I am selecting multiple data on plus button the 1st data is automaticaly wiped
In this adapter i am doing add and minus products. after adding products in array.the problem is when i am adding multiple products in array the first data is wiped automatically in array.
public class PackageOffersSubCategoryAdapter extends RecyclerView.Adapter<PackageOffersSubCategoryAdapter.MyViewHolder> {
private Context context;
private List<PackageOffersSubCategory> packageOffersSubCategoryList, selectedSubService;
private String string, isClicked = "";
private int totalPrice = 0;
private int index;
public PackageOffersSubCategoryAdapter(Context context, List<PackageOffersSubCategory> packageOffersSubCategoryList, String id) {
this.context = context;
this.packageOffersSubCategoryList = packageOffersSubCategoryList;
this.selectedSubService = selectedSubService;
this.string = id;
this.isClicked = isClicked;
}
@NonNull
@Override
public PackageOffersSubCategoryAdapter.MyViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View itemView = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.row_sub_package, viewGroup, false);
return new PackageOffersSubCategoryAdapter.MyViewHolder(itemView);
}
@SuppressLint("SetTextI18n")
@Override
public void onBindViewHolder(@NonNull PackageOffersSubCategoryAdapter.MyViewHolder myViewHolder, @SuppressLint("RecyclerView") int position) {
myViewHolder.txtSubPackageName.setText(packageOffersSubCategoryList.get(position).getName());
if (string.equalsIgnoreCase("custom")) {
myViewHolder.imgPlus.setVisibility(View.VISIBLE);
myViewHolder.imgMinu.setVisibility(View.VISIBLE);
myViewHolder.txtSubPackagePrice.setVisibility(View.VISIBLE);
if (getIndexOfValue(packageOffersSubCategoryList.get(position).getSubServiceId(), selectedSubSList) != RecyclerView.NO_POSITION) {
myViewHolder.txtSubPackagePrice.setText("$ " + selectedSubSList.get(getIndexOfValue(packageOffersSubCategoryList.get(position).getSubServiceId(), selectedSubSList)).get("Price"));
myViewHolder.txtSubPackageValue.setText(selectedSubSList.get(getIndexOfValue(packageOffersSubCategoryList.get(position).getSubServiceId(), selectedSubSList)).get("Value") + " " + packageOffersSubCategoryList.get(position).getUnit());
} else {
Map<String, String> map = new HashMap<>();
map.put("SubServiceId", packageOffersSubCategoryList.get(position).getSubServiceId());
map.put("SubServiceName", packageOffersSubCategoryList.get(position).getName());
map.put("Value", "0");
map.put("Price", "0");
map.put("ServiceId",packageOffersSubCategoryList.get(position).getServiceId());
selectedSubSList.add(map);
myViewHolder.txtSubPackagePrice.setText("$ " + "0");
myViewHolder.txtSubPackageValue.setText("0" + " " + packageOffersSubCategoryList.get(position).getUnit());
}
} else {
myViewHolder.imgPlus.setVisibility(View.GONE);
myViewHolder.imgMinu.setVisibility(View.GONE);
myViewHolder.txtSubPackagePrice.setVisibility(View.GONE);
myViewHolder.txtSubPackageValue.setText(packageOffersSubCategoryList.get(position).getValue() + " " + packageOffersSubCategoryList.get(position).getUnit());
}
myViewHolder.imgPlus.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
if (packageOffersSubCategoryList.get(position).getCoupon_status().equalsIgnoreCase("1")) {
txtApplyCoupon.setBackground(getResources().getDrawable(R.drawable.bg_dark_green_rounded));
} else {
txtApplyCoupon.setBackground(getResources().getDrawable(R.drawable.bg_grey_rounded));
}
myViewHolder.txtSubPackageValue.setText(Integer.parseInt(myViewHolder.txtSubPackageValue.getText().toString().split(" ")[0]) + 1 + " " + packageOffersSubCategoryList.get(position).getUnit());
Log.e("packagevalue", String.valueOf(Integer.parseInt(myViewHolder.txtSubPackageValue.getText().toString().split(" ")[0])));
Log.e("packageSub", (1 + " " + packageOffersSubCategoryList.get(position).getUnit()));
packageOffersSubCategoryList.get(position).setValue(String.valueOf(Integer.valueOf((myViewHolder.txtSubPackageValue.getText().toString().split(" ")[0]))));
Log.e("packed",String.valueOf(Integer.valueOf((myViewHolder.txtSubPackageValue.getText().toString().split(" ")[0]))) );
count1 = Integer.parseInt(myViewHolder.txtSubPackageValue.getText().toString().split(" ")[0]);
if (count1 != 0) {
intPrice = Integer.parseInt(packageOffersSubCategoryList.get(position).getOriginalPrice()) * Integer.parseInt(String.valueOf(count1));
myViewHolder.txtSubPackagePrice.setText("$ " + String.valueOf(intPrice));
}
packageOffersSubCategoryList.get(position).setPrice(myViewHolder.txtSubPackagePrice.getText().toString().split(" ")[1]);
newTotalPrice = newTotalPrice + Integer.valueOf(packageOffersSubCategoryList.get(position).getOriginalPrice());
inrValue = String.valueOf(newTotalPrice * 74);
txtPrice.setText("$ " + String.valueOf(newTotalPrice));
radio_dollar.setText("$ " + String.valueOf(newTotalPrice));
radio_inr.setText("₹ " + inrValue);
strINRprice = inrValue;
if (getIndexOfValue(packageOffersSubCategoryList.get(position).getSubServiceId(), selectedSubSList) != RecyclerView.NO_POSITION) {
int index = getIndexOfValue(packageOffersSubCategoryList.get(position).getSubServiceId(), selectedSubSList);
selectedSubSList.get(index).put("ServiceId", packageOffersSubCategoryList.get(position).getServiceId());
Log.e("ServiceId",packageOffersSubCategoryList.get(position).getServiceId());
selectedSubSList.get(index).put("SubServiceId", packageOffersSubCategoryList.get(position).getSubServiceId());
Log.e("SubServiceId",packageOffersSubCategoryList.get(position).getSubServiceId());
selectedSubSList.get(index).put("SubServiceName", packageOffersSubCategoryList.get(position).getName());
Log.e("SubServiceName",packageOffersSubCategoryList.get(position).getName());
selectedSubSList.get(index).put("Value", packageOffersSubCategoryList.get(position).getValue());
Log.e("Value",packageOffersSubCategoryList.get(position).getValue());
selectedSubSList.get(index).put("Price", packageOffersSubCategoryList.get(position).getPrice());
Log.e("Price", packageOffersSubCategoryList.get(position).getPrice());
} else {
Map<String, String> map = new HashMap<>();
map.put("SubServiceId", packageOffersSubCategoryList.get(position).getSubServiceId());
map.put("ServiceId", packageOffersSubCategoryList.get(position).getServiceId());
map.put("SubServiceName", packageOffersSubCategoryList.get(position).getName());
map.put("Value", "0");
map.put("Price", "0");
selectedSubSList.add(map);
Log.e("map", String.valueOf(map));
}
}
}, 0);
}
});
myViewHolder.imgMinu.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
if (Integer.parseInt(myViewHolder.txtSubPackageValue.getText().toString().split(" ")[0]) > 0) {
if (packageOffersSubCategoryList.get(position).getCoupon_status().equalsIgnoreCase("1")) {
txtApplyCoupon.setBackground(getResources().getDrawable(R.drawable.bg_dark_green_rounded));
} else {
txtApplyCoupon.setBackground(getResources().getDrawable(R.drawable.bg_grey_rounded));
}
myViewHolder.txtSubPackageValue.setText(Integer.parseInt(myViewHolder.txtSubPackageValue.getText().toString().split(" ")[0]) - 1 + " " + packageOffersSubCategoryList.get(position).getUnit());
Log.e("minus",Integer.parseInt(myViewHolder.txtSubPackageValue.getText().toString().split(" ")[0]) -1 + " " + packageOffersSubCategoryList.get(position).getUnit() );
packageOffersSubCategoryList.get(position).setValue(String.valueOf(Integer.valueOf((myViewHolder.txtSubPackageValue.getText().toString().split(" ")[0]))));
count1 = Integer.parseInt(myViewHolder.txtSubPackageValue.getText().toString().split(" ")[0]);
intPrice = Integer.parseInt(packageOffersSubCategoryList.get(position).getOriginalPrice()) * Integer.parseInt(String.valueOf(count1));
myViewHolder.txtSubPackagePrice.setText("$ " + String.valueOf(intPrice));
packageOffersSubCategoryList.get(position).setPrice(myViewHolder.txtSubPackagePrice.getText().toString().split(" ")[1]);
newTotalPrice = newTotalPrice - Integer.valueOf(packageOffersSubCategoryList.get(position).getOriginalPrice());
inrValue = String.valueOf(newTotalPrice * 74);
txtPrice.setText("$ " + String.valueOf(newTotalPrice));
radio_dollar.setText("$ " + String.valueOf(newTotalPrice));
radio_inr.setText("₹ " + inrValue);
index = getIndexOfValue(packageOffersSubCategoryList.get(position).getSubServiceId(), selectedSubSList);
// index = RecyclerView.NO_POSITION;
Log.e("index", String.valueOf(index));
selectedSubSList.get(index).put("SubServiceId", packageOffersSubCategoryList.get(position).getSubServiceId());
Log.e("SubServiceIdpink",packageOffersSubCategoryList.get(position).getSubServiceId());
selectedSubSList.get(index).put("ServiceId", packageOffersSubCategoryList.get(position).getServiceId());
Log.e("ServiceId",packageOffersSubCategoryList.get(position).getServiceId());
selectedSubSList.get(index).put("SubServiceName", packageOffersSubCategoryList.get(position).getName());
selectedSubSList.get(index).put("Value", packageOffersSubCategoryList.get(position).getValue());
selectedSubSList.get(index).put("Price", packageOffersSubCategoryList.get(position).getPrice());
}
}
},0);
}
});
if (position == packageOffersSubCategoryList.size() - RecyclerView.NO_POSITION) {
myViewHolder.txtSubPackageName.setBackground(context.getResources().getDrawable(R.drawable.bg_white_stroke_bottom_left_rounded));
if (string.equalsIgnoreCase("custom")) {
myViewHolder.txtSubPackagePrice.setBackground(context.getResources().getDrawable(R.drawable.bg_white_strike_bottom_right_rounded));
} else {
myViewHolder.llOffered.setBackground(context.getResources().getDrawable(R.drawable.bg_white_strike_bottom_right_rounded));
}
} else {
myViewHolder.txtSubPackageName.setBackground(context.getResources().getDrawable(R.drawable.bg_white_stroke));
myViewHolder.llOffered.setBackground(context.getResources().getDrawable(R.drawable.bg_white_stroke));
}
if (string.equalsIgnoreCase("custom")) {
myViewHolder.txtSubPackageValue.setTextSize(10);
} else {
myViewHolder.txtSubPackageValue.setTextSize(13);
}
}
@Override
public int getItemCount() {
return packageOffersSubCategoryList.size();
}
public class MyViewHolder extends RecyclerView.ViewHolder {
TextView txtSubPackageName, txtSubPackageValue, txtSubPackagePrice;
ImageView imgMinu, imgPlus;
LinearLayout llOffered;
public MyViewHolder(@NonNull View itemView) {
super(itemView);
//setIsRecyclable(false);
txtSubPackageName = itemView.findViewById(R.id.txtSubPackageName);
txtSubPackageValue = itemView.findViewById(R.id.txtSubPackageValue);
imgMinu = itemView.findViewById(R.id.imgMinu);
imgPlus = itemView.findViewById(R.id.imgPlus);
txtSubPackagePrice = itemView.findViewById(R.id.txtSubPackagePrice);
llOffered = itemView.findViewById(R.id.llOffered);
}
}
}
}
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|
