在我的GetView()
我的BaseAdapter
类的方法...我有一个视图持有者。当我点击holder.feedUpVotebutton
feed.numOFLikes
Textview会增加。问题是,当我向下滚动并向上滚动时,该值将恢复为其原始值。我拒绝拨打notifydatasetChanged();
,因为我没有添加任何东西或从列表中删除任何东西。如何在BaseAdapter中设置Viewholder文本?
@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' –