Android 滚动后在Listview中保存更改
在我使用的Android应用程序中,有几个Android 滚动后在Listview中保存更改,android,android-listview,adapter,Android,Android Listview,Adapter,在我使用的Android应用程序中,有几个ListView,用户可以在其中更改行元素。例如,在一个例子中,我有一个按钮,您可以在其中向上投票用户评论(想想Facebook“Like”或Google+“+1”) 当用户单击该按钮时,可绘制图像将发生更改。这很有效问题: 当用户向下滚动然后再向上滚动时,状态将不保存,并返回到原始可绘制状态 下面是我如何在适配器getView()方法中执行代码: public View getView(int position, View convertView, V
ListView
,用户可以在其中更改行元素。例如,在一个例子中,我有一个按钮,您可以在其中向上投票用户评论(想想Facebook“Like”或Google+“+1”)
当用户单击该按钮时,可绘制图像将发生更改。这很有效问题:
当用户向下滚动然后再向上滚动时,状态将不保存,并返回到原始可绘制状态
下面是我如何在适配器getView()
方法中执行代码:
public View getView(int position, View convertView, ViewGroup parent) {
final ViewHolder holder;
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if (convertView == null) {
dCBlue = (Drawable) getContext().getResources().getDrawable(
R.drawable.ic_comment_blue);
dCGray = (Drawable) getContext().getResources().getDrawable(
R.drawable.ic_comment_gray);
convertView = inflater.inflate(R.layout.review_layout, parent,
holder = new ViewHolder();
holder.b2 = (Button) convertView.findViewById(R.id.bReview2);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
convertView.setOnCreateContextMenuListener(null);
}
// later on down
Review r = getItem(position);
votedOn = r.wasVoted;
final Drawable dVBlue = (Drawable) getContext().getResources()
.getDrawable(R.drawable.ic_upvote_blue);
final Drawable dVGray = (Drawable) getContext().getResources()
.getDrawable(R.drawable.ic_upvote_gray);
if (votedOn.equals("1")) {
holder.b2.setCompoundDrawablesWithIntrinsicBounds(null, null, dVBlue, null);
holder.b2.setTag(R.drawable.review_button_press);
} else {
holder.b2.setCompoundDrawablesWithIntrinsicBounds(null, null,dVGray, null);
holder.b2.setTag(R.drawable.review_button);
}
holder.b2.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
if (holder.b2.getTag().equals(R.drawable.review_button)) {
holder.b2.setCompoundDrawablesWithIntrinsicBounds(null, null, dVBlue, null);
holder.b2.setTag(R.drawable.review_button_press);
} else {
holder.b2.setCompoundDrawablesWithIntrinsicBounds(null, null, dVGray, null);
holder.b2.setTag(R.drawable.review_button);
}
bVote = holder.b2;
new HelpfulTask().execute(passing);
});
return convertView;
}
我是否已将其按顺序排列?我看不到您正在更新审阅对象。您应该更新代表一行的对象以表示投票,然后视图绑定应该处理它。在onclick中,当您更新该行的图像时,您应该以某种方式将该信息提交给代表该行的审阅对象。然后,当您下次显示该行时执行getItem(position)时,您将拥有该对象指示的投票状态