Сохранение содержимого представления переработчика после того, как пользователь внес в него изменения, и создание нового списка объектов. - PullRequest
0 голосов
/ 26 июня 2018

Вот так выглядит мой viewHolder. Он имеет элемент счетчика. Я вызвал метод getItemCount () с помощью адаптера, чтобы получить размер списка, который заполняется в представлении переработчика. Теперь пользователь может выбрать предмет из блесны. После того, как пользователь внес все изменения, то есть, изменив счетчики во всех необходимых представлениях, я хочу получить измененную позицию счетчиков для всех виджетов в списке массивов. Я работаю над Android RecyclelerView. Есть список объектов, который передается в адаптер, и список отображается отлично. У каждого из моих зрителей есть три мнения. Это два вида текста и один счетчик. Пользователь может выбрать один из вариантов, доступных на счетчике, и так будет обновляться мое мнение о переработчике. Мне нужна помощь для сохранения обновленного списка объекта, то есть положения счетчика, выбранного пользователем для всех элементов списка, для создания из него xml.

мой код выглядит так:

    int size = mAdapter.getItemCount();
    int val[]= new int[size]; //till here it's working perfectly fine

    for(int i=0; i<size; i++){
        View view_temporary = recyclerView.getChildAt(i);
        Spinner spin = (Spinner)view_temporary.findViewById(R.id.action);
        val[i] = spin.getSelectedItemPosition();
        Log.d("OfficeSpace", ""+val[i]);
    } 

// здесь происходит сбой активности

1 Ответ

0 голосов
/ 27 июня 2018

Я решил проблему. Я хотел сохранить статус моего элемента прядильщика в держателе моего представления после прокрутки назад к вершине. Внутри моего метода onBind recyclerView я добавил этот код:

@Override
public void onBindViewHolder(final MyViewHolder holder, final int position) {
    final Features feature = mFeatures.get(position); //to get the current object from the list

    holder.mSpinner.setSelection(feature.getVal());

    holder.mSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
            mFeatures.get(position).setVal(pos);
        }

        @Override
        public void onNothingSelected(AdapterView<?> parent) {

        }
    });

}
...