1
public class MyCustomAdapter extends BaseAdapter {
    Context context;
    String[] result;
    int[] imageId;
    String[] Cost;
    static int counter = 0;
    private static LayoutInflater inflater = null;


    public MyCustomAdapter(Context mainActivity, String[] result, int[] imageId, String[] Cost
    ) {
        // TODO Auto-generated constructor stub
        this.result = result;
        this.imageId = imageId;
        this.Cost = Cost;
        this.context = mainActivity;
        inflater = (LayoutInflater) context
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }

    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return result.length;
    }

    @Override
    public Object getItem(int position) {
        // TODO Auto-generated method stub
        return position;
    }

    @Override
    public long getItemId(int position) {
        // TODO Auto-generated method stub
        return position;
    }

    public class Holder {
        TextView tv;
        TextView cost;
        ImageView img;
        ImageView plusitem;
        ImageView minusitem;
        TextView itemnumber;

    }

    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub
        final Holder holder = new Holder();
        View rowView;
        rowView = inflater.inflate(R.layout.listitem, null);
        holder.tv = (TextView) rowView.findViewById(R.id.textView1);
        holder.img = (ImageView) rowView.findViewById(R.id.imageView1);
        holder.cost = (TextView) rowView.findViewById(R.id.textView2);
        holder.plusitem = (ImageView) rowView.findViewById(R.id.imageButton2);
        holder.minusitem = (ImageView) rowView.findViewById(R.id.imageButton);
        holder.itemnumber = (TextView) rowView.findViewById(R.id.textView4);
        holder.tv.setText(result[position]);
        holder.img.setImageResource(imageId[position]);

        holder.plusitem.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {


                holder.itemnumber.setText(String.valueOf( _counter));
                //holder.itemnumber.setText(result[position]);

            }
        });

        holder.minusitem.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                holder.itemnumber.setText(String.valueOf( _counter));
                //  holder.itemnumber.setText(result[position]);
            }
        });


        return rowView;

    }}

This is my adapter we have +button for increase item and - button for decrease item i have to get item number like in first item if we have 2 item and second item we can 3 ,4 .. so on.. actuality i want to add item on cart actually i have tried with static variable its not working Properly enter image description hereplease tell me logic . look my screen below

Research Development
  • 884
  • 1
  • 19
  • 39

5 Answers5

2

Create the Buttons and the TextView as shown in your design.Write onclick methods for the Buttons.Initialize an Integer variable for saving the count.In the click of + button,increment the count by one and set the text in Textview.Similarly,when you click the - button,decrement the count by one and set the text in your TextView.

  int count=0;
    TextView txtCount =(TextView) findViewById(R.id.txt);
    Button buttonInc= (Button) findViewById(R.id.button1);
    Button buttonDec= (Button) findViewById(R.id.button2);

    buttonInc.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            count++;
            txtCount.setText(String.valueOf(count));

        }
    });

buttonDec.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            count--;
            txtCount.setText(String.valueOf(count));

        }
    });
Jas
  • 3,207
  • 2
  • 15
  • 45
2
 holder.cart_minus_img.setOnClickListener(new View.OnClickListener() {

//1. List item

        @Override
        public void onClick(View v) {
            int count= Integer.parseInt(String.valueOf(holder.cart_product_quantity_tv.getText()));

            if(count>0){

 //2. enter code here

                count--;

                holder.cart_product_quantity_tv.setText(String.valueOf(count));
            }
        }
    });

    holder.cart_plus_img.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            int count= Integer.parseInt(String.valueOf(holder.cart_product_quantity_tv.getText()));
            count++;
            holder.cart_product_quantity_tv.setText(String.valueOf(count));
        }
    });
janith1024
  • 1,042
  • 3
  • 12
  • 25
Amresh
  • 21
  • 1
0

Use a hash map.For every item clicked store the item id as the key and the clicked count as the value.

For eg:<Item_id:item_count>

This way you can easily manage the user's selection and also its more efficient than using static variables as you need to have only a single hashmap .

Abx
  • 2,852
  • 4
  • 30
  • 50
0

First of all you should maintain one arraylist of custom class having fields like ItemId, ItemName, Price, Quantity, Image and so on. So that you can easily maintain quantity and other details in shopping cart.

Now in adapter you just need to pass this arrayList, no need of passing different Arrays.

int quantity = arraylist.get(position).getItemQuantity();

btnIncrease.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            quantity++;
            tvQuantity.setText(quantity+"");

        }
    });

btnDecrease.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            quantity--;
            tvQuantity.setText(quantity+"");

        }
    });

This works perfectly...

Arth Tilva
  • 2,496
  • 22
  • 40
0

This is the Adapter add to cart in this you can see on btnIncrease and btnDecrease in that i change the value of cart and i use notifyDataSetChanged(); it will change the data automatically

public class MoviesAdapter extends RecyclerView.Adapter<MoviesAdapter.MyViewHolder> {
    private List<Movie> moviesList;

    public class MyViewHolder extends RecyclerView.ViewHolder {
        public TextView title, cart, genre;
        public Button btnIncrease,btnDecrease;

        public MyViewHolder(View view) {
            super(view);
            title = (TextView) view.findViewById(R.id.title);
            genre = (TextView) view.findViewById(R.id.genre);
            cart = (TextView) view.findViewById(R.id.cart);
            btnIncrease =view.findViewById(R.id.plus);
            btnDecrease = view.findViewById(R.id.minus);

        }
    }


    public MoviesAdapter(List<Movie> moviesList) {
        this.moviesList = moviesList;
    }

    @Override
    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View itemView = LayoutInflater.from(parent.getContext())
                .inflate(R.layout.movie_list_row, parent, false);

        return new MyViewHolder(itemView);
    }

    @Override
    public void onBindViewHolder(final MyViewHolder holder, final int position) {
        final Movie movie = moviesList.get(position);
        holder.title.setText(movie.getTitle());
        holder.genre.setText(movie.getGenre());
        holder.cart.setText(String.valueOf(movie.getcart()));
        holder.btnIncrease.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View v)
            {
                movie.cart++;
                notifyDataSetChanged();
            }
        });

        holder.btnDecrease.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View v)
            {
                if (movie.cart>0)
                     movie.cart--;

                notifyDataSetChanged();
            }
        });

    }

    @Override
    public int getItemCount() {
        return moviesList.size();
    }
}
baikho
  • 5,203
  • 4
  • 40
  • 47
akshay shetty
  • 194
  • 3
  • 10