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