Hiện kết quả từ 1 tới 7 của 7

Chủ đề: Position trong Adapter Listview


  1. #1
    Thành Viên Mới Avatar của tambui
    Tham gia
    Apr 2018
    Bài gửi
    4

    Icon1 Position trong Adapter Listview

    Chào mọi người.
    Mình đang demo app bán hàng.
    Khi mình add 1 sản phẩm vào giỏ hàng (giỏ hàng hiển thị item listview) , sau đó mình tương tác vào button tăng giảm số lượng của sản phẩm đó thì chạy ok.
    Khi mình add vào sản phẩm thứ 2 thì mình tương tác vào button tăng giảm số lượng (của sản phẩm thứ 2) thì ok, nhưng nếu mình tương tác vào button tăng giảm của sản phẩm thứ 1 thì số lượng + giá tiền sản phẩm thứ 1 lại không có gì xảy ra mà thay vào đó thì sản phẩm thứ 2 lại thay đổi số luợng + giá tiền.
    Tương tự như khi add vào sản phẩm thứ 3 thì sản phẩm 1,2 khi tương tác vào sẽ không thay đổi gì mà sản phẩm thứ 3 lại thay đổi.

    Kiểu như khi tương tác ở bất kì position nào thì chỉ có position mới nhất được add vào là thay đổi giá trị.

    Mình fix hoài mà không được, mọi người giúp mình với.
    Cảm ơn mọi người

    Chủ đề tương tự:


  2. #2
    Thành Viên Mới Avatar của newstarbka
    Tham gia
    Jan 2018
    Bài gửi
    9
    Chắc ban phải đưa code adapter lên đây thì tư vấn mới dễ hơn



  3. #3
    Thành Viên Mới Avatar của tambui
    Tham gia
    Apr 2018
    Bài gửi
    4
    Quote Nguyên văn bởi newstarbka Xem bài viết
    Chắc ban phải đưa code adapter lên đây thì tư vấn mới dễ hơn
    code đây bác, xem giúp mình với

    Mã:
    public class GiohangAdapter extends BaseAdapter {
    Context context;
    ArrayList<Giohang> arraygiohang;
    ViewHolder viewHolder = null;
    
    public GiohangAdapter(Context context, ArrayList<Giohang> arraygiohang) {
         this.context = context;
         this.arraygiohang = arraygiohang;
    }
    
    @Override
    public int getCount() {
         return arraygiohang.size();
    }
    
    @Override
    public Object getItem(int i) {
         return arraygiohang.get(i);
    }
    
    @Override
    public long getItemId(int i) {
         return i;
    }
    
    
    
    
    public class ViewHolder{
    public TextView txttengiohang, txtgiagiohang;
    public ImageView imggiohang;
    public Button btnminus, btnvalues, btnplus;
    }
    
    @Override
    public View getView(final int position, View view, ViewGroup parent) {
    
      if(view == null){
          viewHolder = new ViewHolder();
          LayoutInflater layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
          view = layoutInflater.inflate(R.layout.dong_giohang , null);
    
    
          viewHolder.txttengiohang    = (TextView) view.findViewById(R.id.textviewtengiohang);
          viewHolder.txtgiagiohang    = (TextView) view.findViewById(R.id.textviewgiagiohang);
          viewHolder.imggiohang       = (ImageView) view.findViewById(R.id.imageviewgiohang);
          viewHolder.btnminus         = (Button) view.findViewById(R.id.buttonMinus);
          viewHolder.btnvalues        = (Button) view.findViewById(R.id.buttonValues);
          viewHolder.btnplus          = (Button) view.findViewById(R.id.buttonPlus);
    
          view.setTag(viewHolder);
    
      }else{
          viewHolder = (ViewHolder) view.getTag();}
    
    
         Giohang giohang = (Giohang) getItem(position);
          viewHolder.txttengiohang.setText(giohang.getTensp());
    
    
         DecimalFormat decimalFormat = new DecimalFormat("###,###,###");
          viewHolder.txtgiagiohang.setText(decimalFormat.format(giohang.getGiasp())+ " Đ");
    
    
         Picasso.with(context).load(giohang.getHinhsp())
                                     .placeholder(R.drawable.imagesno)
                                     .error(R.drawable.imageerror)
                                     .into(viewHolder.imggiohang);
    
    
    
          viewHolder.btnvalues.setText(giohang.getSoluongsp() + "");
    
          int sl = Integer.parseInt(viewHolder.btnvalues.getText().toString());
           if(sl >= 10){
                 viewHolder.btnplus.setVisibility(View.INVISIBLE);
                 viewHolder.btnminus.setVisibility(View.VISIBLE);
          }else if(sl <= 1){
                 viewHolder.btnminus.setVisibility(View.INVISIBLE);
          }else if (sl >= 1){
                 viewHolder.btnplus.setVisibility(View.VISIBLE);
                 viewHolder.btnminus.setVisibility(View.VISIBLE);
                           }
    
    
    
    viewHolder.btnplus.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
           int soluongmoinhat = Integer.parseInt(viewHolder.btnvalues.getText().toString()) +1;
           int soluonghientai = MainActivity.mangGioHang.get(position).getSoluongsp();
           long giahientai = MainActivity.mangGioHang.get(position).getGiasp();
    
           MainActivity.mangGioHang.get(position).setSoluongsp(soluongmoinhat);
           long giamoinhat = (giahientai*soluongmoinhat) / soluonghientai;
           MainActivity.mangGioHang.get(position).setGiasp(giamoinhat);
    
    
           DecimalFormat decimalFormat = new DecimalFormat("###,###,###");
          viewHolder.txtgiagiohang.setText(decimalFormat.format(giamoinhat)+ " Đ");
    
    
    
           com.example.tam.tb_food.activity.Giohang.EventUltil();
    
    
    
         if(soluongmoinhat > 9){
          viewHolder.btnplus.setVisibility(View.INVISIBLE);
          viewHolder.btnminus.setVisibility(View.VISIBLE);
          viewHolder.btnvalues.setText(String.valueOf(soluongmoinhat));
        }else{
          viewHolder.btnplus.setVisibility(View.VISIBLE);
          viewHolder.btnminus.setVisibility(View.VISIBLE);
          viewHolder.btnvalues.setText(String.valueOf(soluongmoinhat));
              }
         }
    
    });
    
    viewHolder.btnminus.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
             int soluongmoinhat = Integer.parseInt(viewHolder.btnvalues.getText().toString()) -1;
             int soluonghientai = MainActivity.mangGioHang.get(position).getSoluongsp();
             long giahientai = MainActivity.mangGioHang.get(position).getGiasp();
    
    
    
              MainActivity.mangGioHang.get(position).setSoluongsp(soluongmoinhat);
             long giamoinhat = (giahientai*soluongmoinhat) / soluonghientai;
             MainActivity.mangGioHang.get(position).setGiasp(giamoinhat);
    
    
             DecimalFormat decimalFormat = new DecimalFormat("###,###,###");
             viewHolder.txtgiagiohang.setText(decimalFormat.format(giamoinhat)+ " Đ");
    
    
             com.example.tam.tb_food.activity.Giohang.EventUltil();
    
    
       if(soluongmoinhat < 2){
         viewHolder.btnplus.setVisibility(View.VISIBLE);
         viewHolder.btnminus.setVisibility(View.INVISIBLE);
         viewHolder.btnvalues.setText(String.valueOf(soluongmoinhat));
       }else{
         viewHolder.btnplus.setVisibility(View.VISIBLE);
         viewHolder.btnminus.setVisibility(View.VISIBLE);
         viewHolder.btnvalues.setText(String.valueOf(soluongmoinhat));
               }
          }
     });
    
    return view;
      }
    }
    



    Lần sửa cuối bởi tambui; 12-04-18 lúc 08:33 PM

  4. #4
    Thành Viên Mới Avatar của newstarbka
    Tham gia
    Jan 2018
    Bài gửi
    9
    Ở đoạn sự kiện click vào button plus hặc minus thì theo mình bạn nên thay đổi giá trị phần tử ở arraygiohang chứ ko nên thay đổi giá trị list MainActivity.mangGioHang.get(position).setSoluongsp(soluongmoinhat);
    Bạn thử cập nhật giá trị mảng này xem sao :
    arraygiohang



  5. #5
    Thành Viên Mới Avatar của tambui
    Tham gia
    Apr 2018
    Bài gửi
    4
    Quote Nguyên văn bởi newstarbka Xem bài viết
    Ở đoạn sự kiện click vào button plus hặc minus thì theo mình bạn nên thay đổi giá trị phần tử ở arraygiohang chứ ko nên thay đổi giá trị list MainActivity.mangGioHang.get(position).setSoluongsp(soluongmoinhat);
    Bạn thử cập nhật giá trị mảng này xem sao :
    arraygiohang
    cũng vậy à bác ơi, vẫn không được



  6. #6
    Thành Viên Mới Avatar của newstarbka
    Tham gia
    Jan 2018
    Bài gửi
    9
    Quote Nguyên văn bởi tambui Xem bài viết
    cũng vậy à bác ơi, vẫn không được
    int soluongmoinhat = Integer.parseInt(viewHolder.btnvalues.getText().to String()) +1; int soluonghientai = MainActivity.mangGioHang.get(position).getSoluongsp(); long giahientai = MainActivity.mangGioHang.get(position).getGiasp(); MainActivity.mangGioHang.get(position).setSoluongsp(soluongmoin hat); long giamoinhat = (giahientai*soluongmoinhat) / soluonghientai;MainActivity.mangGioHang.get(position).setGiasp(giamoinhat);

    Nguồn bài viết : Position trong Adapter Listview


    Chỗ này bạn cũng phải lấy dữ liệu theo mảng mới cập nhật trong mảng ở Adapter



  7. #7
    Thành Viên Mới Avatar của tambui
    Tham gia
    Apr 2018
    Bài gửi
    4
    Quote Nguyên văn bởi newstarbka Xem bài viết
    int soluongmoinhat = Integer.parseInt(viewHolder.btnvalues.getText().to String()) +1; int soluonghientai = MainActivity.mangGioHang.get(position).getSoluongsp(); long giahientai = MainActivity.mangGioHang.get(position).getGiasp(); MainActivity.mangGioHang.get(position).setSoluongsp(soluongmoin hat); long giamoinhat = (giahientai*soluongmoinhat) / soluonghientai;MainActivity.mangGioHang.get(position).setGiasp(giamoinhat);

    Nguồn bài viết : Position trong Adapter Listview


    Chỗ này bạn cũng phải lấy dữ liệu theo mảng mới cập nhật trong mảng ở Adapter
    mình đổi hết nó thành arraygiohang luôn rồi đó bác, mà vẫn ko được



Đánh dấu

Quyền viết bài

  • Bạn không thể gửi chủ đề mới
  • Bạn không thể gửi trả lời
  • Bạn không thể gửi file đính kèm
  • Bạn không thể sửa bài viết của mình
  •