0

I use the following code:

ListView simpleList = (ListView) findViewById(R.id.items);

CustomAdapter customAdapter = new CustomAdapter(getApplicationContext(), itemsList, quantityList,this);

simpleList.setAdapter(customAdapter);
simpleList.setOnItemClickListener(new AdapterView.OnItemClickListener() {

    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

    }

Each row look like this picture below pic

I want to know when the user clicking on the plus/minus button. How can I do that? I have started the function setOnItemClickListener but don't know how to countinue.

AA Shakil
  • 478
  • 4
  • 14
guy
  • 1
  • You can do that from *CustomAdapter* itself where you are setting up *plus/minus button*. Show your *CustomAdapter* code. – Jay Rathod RJ May 05 '18 at 13:33
  • Possible duplicate of [How to customize listview using baseadapter](https://stackoverflow.com/questions/16333754/how-to-customize-listview-using-baseadapter) – ADM May 05 '18 at 13:38

2 Answers2

2

You can also implements your interface by modified follow code

Interface you have to create class

public interface MyCustomAdpClick {
    public void plusClick();// You can pass argument whatever you needed

    public void minusClick();// You can pass argument whatever you needed
}

Modify you set adapter code as below

 ListView simpleList = (ListView) findViewById(R.id.items);
    List<String> lis1 = new ArrayList<>();// change to your list of items here
    CustomAdapter customAdapter = new CustomAdapter(getApplicationContext(), lis1, lis1, new MyCustomAdpClick() {
        @Override
        public void plusClick() {// handle plus event
        }

        @Override
        public void minusClick() {//handle minus event
        }
    });

In you custom adapter you have to modify below one

    Context context;
    MyCustomAdpClick myCustomAdpClick;
    List<String> lis1;
    List<String> lis2;

        public CustomAdapter(Context context, List<String> lis1, List<String> lis2, MyCustomAdpClick myCustomAdpClick) {
        this.context = context;
        this.lis1 = lis1;
        this.lis2 = lis2;

        this.myCustomAdpClick = myCustomAdpClick;
    }

Now you can use the click event each for each button in your adapter getview method

 buttonPlus.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            myCustomAdpClick.plusClick();
        }
    });
            buttonMinus.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {

                    myCustomAdpClick.minusClick();
                }
            });
Navin
  • 237
  • 1
  • 8
0

In your CustomAdapter class, declare the 2 buttons there.

Add this to CustomAdapter class

private static class MyViews{
    Button btn1;
    Button btn2;
}


  @Override
public View getView(int position, View convertView, ViewGroup parent) {

   final MyViews views;

    if (convertView == null)
    {
        views.btn1= (Button) convertView.findViewById(R.id.yourbutton1);
        views.btn2= (Button) convertView.findViewById(R.id.yourbutton2);

        result=convertView;

        convertView.setTag(views);
    }
    else
    {
        views = (MyViews) convertView.getTag();
        result=convertView;
    }

    btn1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            //your code...
        }
    });

    btn2.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            //your code...
        }
    });

    return convertView;

}

And control all of your data inside your CustomAdapter class.

AA Shakil
  • 478
  • 4
  • 14
francis
  • 1
  • 2