В моем методе GetView()
моего класса BaseAdapter
... У меня есть держатель для просмотра. Когда я нажимаю holder.feedUpVotebutton
, текст feed.numOFLikes
Textview увеличивается. Проблема в том, что когда я прокручиваю вниз и прокручиваю назад, значение возвращается к исходному значению. Я отказываюсь звонить notifydatasetChanged();
, потому что я ничего не добавляю и ничего не удаляю из списка.Как установить текст в приложении в базовом адаптере?
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
likes = new int[GlobalFeedTab.arrayFeedList.size()];
ViewHolder holder;
if (view == null) {
position = i;
view = inflater.inflate(R.layout.feed_list_row, viewGroup, false);
holder = new ViewHolder();
holder.feedNumOfLikes = (TextView) view.findViewById(R.id.feedNumofLikes);
holder.feedUpVoteButton = (Button) view.findViewById(R.id.feedUpVoteButton);
view.setTag(holder);
}
else if(view != null){
position = i;
holder = (ViewHolder) view.getTag();
}
HashMap<String, String> mFeed = new HashMap<>(); //Hashmap of data that I get from the MainActivity
mFeed = GlobalFeedTab.arrayFeedList.get(position);
holder.feedNumOfLikes.setText(mFeed.get("likes"));
holder.feedUpVoteButton.setTag(position);
holder.feedUpVoteButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int pos = (Integer) v.getTag();
ParseObject parseObFeed = objects.get(pos);
likes[pos] += 1;
parseObFeed.put("likes", likes[pos]);
holder.feedNumOfLikes.setText(String.valueOf(parseObFeed.getInt("likes")
)); //This is where I set the Text
parseObFeed.saveInBackground();
}
});
}
class ViewHolder {
TextView feedNumOfLikes;
Button feedUpVoteButton;
}
Почему бы не использовать ArrayAdapter или даже RecyclerView.Adapter? –
'GlobalFeedTab.arrayFeedList' - это мой ArrayAdapter. @ cricket_007 – grant
Я так не думаю. Это 'ArrayList' –