Указание на нажатие кнопки в listView - PullRequest
0 голосов
/ 05 мая 2018

Я использую следующий код:

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) {

    }

Каждая строка выглядит так, как показано ниже pic

Я хочу знать, когда пользователь нажимает кнопку плюс / минус. Как я могу это сделать? Я запустил функцию setOnItemClickListener, но не знаю, как считать.

Ответы [ 2 ]

0 голосов
/ 05 мая 2018

Вы также можете реализовать свой интерфейс, изменив следующий код

Интерфейс, который вы должны создать класс

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

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

Изменить установленный код адаптера, как показано ниже

 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
        }
    });

В вашем пользовательском адаптере вы должны изменить ниже одного

    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;
    }

Теперь вы можете использовать событие click для каждой кнопки в вашем методе getview.

 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();
                }
            });
0 голосов
/ 05 мая 2018

В вашем классе CustomAdapter объявите 2 кнопки.

Добавьте это к 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;

}

И управляйте всеми своими данными в вашем CustomAdapter классе.

...