Как помешать спиннеру использовать выделение с Recyclerview? - PullRequest
0 голосов
/ 23 апреля 2020

У меня есть счетчик, заполненный списком. Когда я выбираю опцию, элемент добавляется к адаптеру повторного просмотра, и элемент удаляется из списка, который показывает счетчик, но когда элемент удаляется, а другой устанавливается на его место, система принимает это как мой выбор и добавление этого нового элемента в адаптер и удаление его из списка счетчиков. Кроме того, на моих элементах адаптера у меня есть кнопка удаления, и при нажатии на нее элемент удаляется из адаптера и добавляется в список отображения счетчика, но он снова воспринимает это как новый выбор, снова добавленный в адаптер, и удаляет его из список счетчиков. Поэтому я пытаюсь остановить это.

Это адаптер спиннера

public void buildAdapterProduct(){
arrayProductId = new int[productList.size()];
arrayProductName = new String[productList.size()];

for (int i = 0; i < productList.size(); i++) {
    arrayProductName[i] = productList.get(i).nameProduct;
    arrayProductId[i] = productList.get(i).idProduct;
}
adapter = new CustomArrayAdapter<CharSequence>(this, arrayProductName);
spnProductToReturnNew.setAdapter(adapter);
spnProductToReturnNew.setSelection(0, false);

}

Это адаптер повторного просмотра, где я также называю элемент удаления

public void buildAdapterProductChange(){
editModelArrayList = populateList();
try {
    productToExchangeAdapter = new ProductDevolutionAdapter(productListToExchange, context,editModelArrayList);
    rcvProductDevolutionNew.setLayoutManager(linearLayoutManager);
    rcvProductDevolutionNew.setAdapter(productToExchangeAdapter);
    productToExchangeAdapter.setOnItemClickListener(new ProductDevolutionAdapter.OnItemClickListener() {
        @Override
        public void onDeleteClick(int position) {

            removeItem(position);

        }
    });
}catch (Exception e){
    Log.e(TAG, "Here 3");
}
}

Это элемент удаления

public void removeItem(int position){
        productList.add(productListToExchange.get(position));
        productListToExchange.remove(position);
        productToExchangeAdapter.notifyItemRemoved(position);
        buildAdapterProduct();

    }

Это выбор вращателя

 spnProductToReturnNew.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {

            public void onItemSelected(AdapterView<?> parent, View v, int position, long id) {

                if (userIsInteracting) {
                    int productIdSelected= arrayProductId[position];
                    try{
                        int pos = productListToExchange.size();
                        insertItem(pos, productIdSelected);
                    }catch (Exception e){
                        insertItem(0, productIdSelected);
                    }
                    productList.remove(position);
                    buildAdapterProduct();
                }
            }
            public void onNothingSelected(AdapterView<?> arg0) {
                // TODO Auto-generated method stub
            }
        });

И, наконец, вот как я добавляю элемент в адаптер

 public void insertItem(int position, int productIdSelected) {
        Product productSelected = new Product().findProductById(productIdSelected);
        productListToExchange.add(position, productSelected);
        try{
            productToExchangeAdapter.notifyItemInserted(position);

        }catch (Exception e){
            Log.e(TAG, "Here 2");
        }
        buildAdapterProductChange();
    }

Любая помощь или предложение были бы хорошими, спасибо.

...