Android : adapter holder on listener cannot be final

on Friday, September 19, 2014


i need to add a progress listner to each element of the horizontal list View, how can i do that ?


for eatch item i upload file


I wanna to do something like that but holder is not final, so i have error



public class UploadsViewAdapter extends BaseAdapter {
private Context mContext;
private int mLayoutResourceId;
List<Upload> listFileToUpload;

public UploadsViewAdapter(Context context, int layoutResourceId,
List<Upload> data) {
this.mLayoutResourceId = layoutResourceId;
this.mContext = context;
this.listFileToUpload = data;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row = convertView;
ViewHolder holder = null;

if (row == null) {
LayoutInflater inflater = ((Activity) mContext).getLayoutInflater();
row = inflater.inflate(mLayoutResourceId, parent, false);
holder = new ViewHolder();
holder.image = (ImageView) row.findViewById(R.id.upload_item_image);
holder.progressUpdate = (ProgressBar) row
.findViewById(R.id.progressUpdate);
row.setTag(holder);
} else {
holder = (ViewHolder) row.getTag();
}

final Upload item = getItem(position);
holder.image.setImageBitmap(item.getThumbnail(160, 160));
item.setProgressListener(new ProgressListener() {

@Override
public void onProgress(int progress) {
holder.progressUpdate.setProgress(item.getProgress());
}
});
holder.progressUpdate.setProgress(item.getProgress());
return row;
}

static class ViewHolder {
ImageView image;
ProgressBar progressUpdate;
}

public void updateListFileToUpdate(List<Upload> listFileToUpload) {
this.listFileToUpload = listFileToUpload;
}

@Override
public int getCount() {
return listFileToUpload.size();
}

@Override
public Upload getItem(int location) {
return listFileToUpload.get(location);
}

@Override
public long getItemId(int position) {
return 0;
}


How can i resolve the problem?


0 comments:

Post a Comment