как отключить просмотр списка один раз, если я нажму на элемент списка? - PullRequest
0 голосов
/ 20 июня 2020

если я нажимаю на элемент listview, setOnItemClickListener делает listview пустым, в то же время addTextChangedListener выполняет поиск в базе данных и добавляет другие продукты в список.

namechange.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) { }
            @Override
            public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
                ArrayList<String> arrList = new ArrayList<>();
                if ((namechange.getText().toString()).equals("") ) {
                    arrList.clear();
                    final ArrayAdapter Adapter = new ArrayAdapter(MapsActivity.this, android.R.layout.simple_list_item_1, arrList);
                    list.setAdapter(Adapter);
                    Adapter.notifyDataSetChanged();
                } else {

                    SenderReceiver sr = new SenderReceiver(MapsActivity.this, url, namechange.getText().toString(),list);
                    sr.execute();

                    list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                        @Override
                        public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                            String adapt = adapterView.getItemAtPosition(i).toString();
                            namechange.setText(adapt);
                            ArrayList<String> arrList = new ArrayList<>();
                            arrList.clear();
                            final ArrayAdapter Adapter = new ArrayAdapter(MapsActivity.this, android.R.layout.simple_list_item_1, arrList);
                            list.setAdapter(Adapter);
                            Adapter.notifyDataSetChanged();

                        }
                    });
                } }

1 Ответ

0 голосов
/ 20 июня 2020

вам нужно вынуть свой список адаптеров logi c и щелкнуть logi c за пределами TextChangeLogi c и вместо обратного вызова onTextChanged использовать afterTextChanged

        final ArrayList<String> dataList = new ArrayList();
        final ArrayAdapter adapter = new ArrayAdapter(MapsActivity.this, android.R.layout.simple_list_item_1,dataList);
        list.setAdapter(Adapter);

        list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                String item = adapterView.getItemAtPosition(i).toString();
                namechange.setText(item);
                dataList.clear();
                adapter.notifyDataSetChanged();
            }
        });


        nameChange.addTextChangedListener(new TextWatcher() {
            @Override
            public void afterTextChanged(Editable editable) {
                if (TextUtils.isEmpty(editable.toString())) {
                    dataList.clear();
                    adapter.notifyDataSetChanged();
                }else{
                    SenderReceiver sr = new SenderReceiver(MapsActivity.this, url, namechange.getText().toString(),list);
                    sr.execute();
                }
            }
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...