Je travaille sur une application Android qui utilise un ListView, dans lequel chaque ligne est composée d'une vue de texte et une barre de progression. Les choses fonctionnent bien, sauf si l'utilisateur doit faire défiler une longue liste. ProgressBars commence à prendre la progression des autres ProgressBars qui ne sont pas visibles à l'écran. Je comprends que c'est un problème commun qui découle de l'implémentation de GetView, mais je me demande quelle est la meilleure action à prendre avec ProgressBars.Faire défiler ListView de ProgressBars
GetView:
public View getView(int position, View convertView, ViewGroup parent){
View row = convertView;
ViewWrapper wrapper;
ProgressBar myProgressBar;
int initProgress = myData.get(position).getProgress();
if (row == null){
LayoutInflater inflater = context.getLayoutInflater();
row = inflater.inflate(R.layout.row, null);
wrapper = new ViewWrapper(row);
row.setTag(wrapper);
}
else{
wrapper = (ViewWrapper)row.getTag();
}
RowModel model = getModel(position);
wrapper.getPid().setText(model.toString());
myProgressBar = wrapper.getProgressBar();
myProgressBar.setProgress(initProgress);
myProgressBar.setMax(100);
myProgressBar.setTag(new Integer(position));
return row;
}
ViewWrapper:
public class ViewWrapper {
View base;
TextView pid = null;
ProgressBar pb= null;
ViewWrapper(View base){
this.base = base;
}
TextView getPid(){
if(pid == null){
pid = (TextView)base.findViewById(R.id.pid);
}
return(pid);
}
ProgressBar getProgressBar(){
if(pb== null){
pb= (ProgressBar)base.findViewById(R.id.progressbar);
}
return(pb);
}
}
Il semble que le problème est lié à:
myProgressBar = wrapper.getProgressBar();
parce que ProgressBar commence à obtenir le comportement d'un ProgressBar recyclé. Cependant, je veux qu'il ait son propre comportement.
Quelle est la meilleure façon de remédier à cela? Merci.