在Recycler视图项中仅刷新列表项的一个参数包含incrementament + decreament + spinner

时间:2016-05-30 15:17:23

标签: android android-recyclerview notifydatasetchanged

我想只刷新列表项的一个参数,其中列表项包含用于增加或减少值和微调器的提供。 当我选择微调器值并通过notify datachange()增加和刷新项时,每次增加或减少时,微调器的值都会默认。 如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

终于得到了解决方案。 我只需要一个布尔值isFirstTimeInflate = true; 在适配器第一次膨胀所有视图时。 当item position == list.size(); make isFirstTimeInflate = false;

@Override
    public void onBindViewHolder(final CardViewHolder holder, final int position) {
        final Category category = categories.get(position);

        holder.plus.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                EventBus.getDefault().post(new ActionEvent(category, position, true, false));
            }
        });

        holder.minus.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                EventBus.getDefault().post(new ActionEvent(category, position, false, true));
            }
        });

        if (isFirstTimeInflate) {
            value.setAdapter(new SpinnerAdapter(context, R.layout.points_spinner_row, category.getAvailableCards()));
            value.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
                @Override
                public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                    category.setValue(category.getAvailableCards().get(position));
                }

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

                }
            });
        }

        count.setText(category.getCount() + "");
        if (position == categories.size()-1) {
            isFirstTimeInflate = false;
        }
    }