Состояние флажка в просмотре списка по элементу LongClick - PullRequest
0 голосов
/ 06 июля 2019

У меня есть просмотр списка, в котором, когда вы выбираете строку, ее флажок становится отмеченным / не отмеченным.Тем не менее, у меня есть onItemLongClick, который отображает диалоговое окно.

Проблема в том, что когда я долго щелкаю строку в просмотре списка, она проверяется, и я не хочу, чтобы это произошло, мне просто нужноотобразить диалог.Это сбивает с толку меня, потому что onItemClick также вызывается, когда я использую onItemLongClick.

Вот код для onItemClick:

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @RequiresApi(api = Build.VERSION_CODES.N)
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            CheckBox checkBox = (CheckBox)view.findViewById(R.id.checkmark);
            TextView tv3 = (TextView)view.findViewById(R.id.tx_amount);
            String shitts = listView.getItemAtPosition(position).toString();
            HashMap<String, String> data = new HashMap<>();
            AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
            try {
                checkBox.setChecked(!checkBox.isChecked());
                String[] a = shitts.split(", ");
                String[] sep = a[0].split("=");
                String betamount = sep[1];
                String[] sepx = a[2].split("=");
                String betnumber = sepx[1];
                String showbetnumber = betnumber.replaceAll("[;/:*?\"<>|&{}']","");

                if(checkBox.isChecked()){
                    hash.put(showbetnumber,tv3.getText().toString());
                }else {
                    tv3.setText(betamount);
                    checked.removeAll(Collections.singletonList(position));
                    hash.remove(showbetnumber,tv3.getText().toString());
                }
            }catch (Exception e){
            }
        }
    });

и вот код для onItemLongClick

listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
        @Override
        public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
            TextView txAmt = view.findViewById(R.id.tx_amount);
            AlertDialog.Builder alert = new AlertDialog.Builder(MainActivity.this);
            alert.setTitle("Enter Amount:");
            final EditText input = new EditText(MainActivity.this);
            input.setInputType(InputType.TYPE_CLASS_NUMBER);
            input.setRawInputType(Configuration.KEYBOARD_12KEY);
            alert.setView(input);
            alert.setPositiveButton("enter", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int whichButton) {
                    String x = input.getText().toString();
                    txAmt.setText(x);
                }
            });
            alert.setNegativeButton("cancel", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int whichButton) {
                    //Put actions for CANCEL button here, or leave in blank
                }
            });
            alert.show();
            return false;
        }
    });

Любая помощь приветствуется!

1 Ответ

0 голосов
/ 06 июля 2019

Создайте логическое значение isLongClick и установите его на false.

onItemLongClick(), установите isLongClick на true.

В диалоговом окне установите isLongClick на false снова при нажатии любой кнопки или при закрытии диалогового окна.

Наконец, заверните весь ваш код в onItemClick() в:

if (!isLongClick) { 
    // onItemClick() code
}

Источник этого решения

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...