【发布时间】:2012-11-30 15:05:35
【问题描述】:
我有一个自定义列表适配器,我正在尝试使用其中包含进度条的布局。
我的问题是,当视图第一次膨胀时,我将进度条的可见性设置为 false。单击该项目时,我将进度条可见性设置为 true。但是,如果你向下滚动列表,随机项的进度条就会变得可见(由于视图的回收?)。
有什么简单的方法可以解决这个问题?
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
if (convertView == null) {
convertView = inflater.inflate(R.layout.imagegriditem, null);
holder = new ViewHolder();
holder.heroName = (TextView) convertView.findViewById(R.id.heroName);
holder.heroImage = (ImageView)convertView.findViewById(R.id.heroImage);
holder.progressBar = (ProgressBar) convertView.findViewById(R.id.progressBar);
holder.progressBar.setIndeterminate(false);
holder.progressBar.setVisibility(View.INVISIBLE);
holder.progressBar.setIndeterminate(false);
holder.progressVisible = View.INVISIBLE;
convertView.setTag(holder);
}
else{
holder = (ViewHolder) convertView.getTag();
}
if(holder != null){
holder.heroName.setText(heroes[position]);
holder.heroImage.setImageResource(android.R.drawable.ic_dialog_email);
holder.progressBar.setProgress(10);
}
final int pos = position;
final ViewHolder hold = holder;
convertView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
hold.progressBar.setProgress(hold.progressBar.getProgress() + 10);
hold.progressVisible = View.VISIBLE;
hold.progressBar.setVisibility(View.VISIBLE);
}
});
return convertView;
}
这基本上是概念验证代码.. 所以它不是很漂亮。但是,只是想把这个想法记下来,以便我可以正确使用它。
【问题讨论】:
-
due to the recycling of the view?是的!您需要跟踪可见/不可见的项目,然后在getView中更新它 -
检查 stackoverflow.com/questions/6649077/…>.
标签: android listadapter