Я пытаюсь загрузить представление переработчика, в котором перечислены карты, каждая карта состоит из четырех элементов. два текстовых представления (posttext, score - это идентификатор) и две кнопки (minusOne и plusOne).
Приведенный ниже код правильно загружает содержимое и кнопки текстового представления на всех карточках.
Я пытаюсь реализовать следующее поведение.
onbuttonclick кнопки plusOne, оценка будет изменена, а кнопка minusOne скрыта.
Странно то, что результаты корректно обновляются на соответствующих картах. Но скрытая часть, по-видимому, происходит на нескольких картах, когда действие выполняется на одной карте (каждая n+5-я карта). Как это исправить? Где я ошибаюсь? Спасибо.
P.S. Предлагаю изменить название
@Override
public void onBindViewHolder(
final MyViewHolder viewHolder, final int position) {
ParseObject model = items.get(position);
viewHolder.posttext.setText(model.getString("postText"));
viewHolder.score.setText(Integer.toString(model.getInt("score")));
viewHolder.plusOne.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ParseObject model = items.get(position);
final int score = model.getInt("score");
model.increment("score", 1);
model.saveInBackground(new SaveCallback() {
@Override
public void done(ParseException e) {
if(e==null)
{
viewHolder.score.setText(Integer.toString(score+1));
viewHolder.minusOne.setVisibility(View.GONE);
}
else{
e.printStackTrace();
}
}
});
}
});
if (score > 0) set visible else set invisible
. Таким образом, видимость определяется каждый раз при вызове onBindViewHolder, а также для повторно используемых представлений. - person cYrixmorten   schedule 30.05.2015