Reputation:
I'm wanted to show a progress bar in listView
. Below code is part of MyCustomBaseAdapter
.
public class MyCustomBaseAdapter extends BaseAdapter{ // for ListView
private static ArrayList<SearchResults> searchArrayList;
RelativeLayout footerLayout;
private LayoutInflater mInflater;
ListView listview;
public MyCustomBaseAdapter(Context context, ArrayList<SearchResults> results,ListView listview,RelativeLayout footerLayout) {
searchArrayList = results;
this.listview=listview;
this.footerLayout=footerLayout;
mInflater = LayoutInflater.from(context);
addOrRemoveFooter();
}
public View getView(int position, View convertView, ViewGroup parent) {
final SearchResults search=getItem(position);
ViewHolder holder;
if (convertView == null) {
convertView = mInflater.inflate(R.layout.custom_row_view, null);
holder = new ViewHolder();
holder.txtProject= (TextView) convertView.findViewById(R.id.ListProject);
holder.txtDescription = (TextView) convertView.findViewById(R.id.ListDescription);
//holder.txtProgress = (TextView) convertView.findViewById(R.id.ListProgress);
holder.progressBar=(ProgressBar)convertView.findViewById(R.id.downloadProgressBar);
holder.txtIn=(TextView)convertView.findViewById(R.id.ListTimeIn);
holder.txtOut=(TextView)convertView.findViewById(R.id.ListTimeOut);
holder.search = search;
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.txtProject.setText(searchArrayList.get(position).getProject());
holder.txtDescription.setText(searchArrayList.get(position).getDescription());
//holder.txtProgress.setText(searchArrayList.get(position).getProgress());
holder.txtIn.setText(searchArrayList.get(position).getTimeIn());
holder.txtOut.setText(searchArrayList.get(position).getTimeOut());
holder.progressBar.setProgress(searchArrayList.get(position).getProgress()); // Error on this line setProgress(int) cannot be applied to java.lang.String
return convertView;
}
static class ViewHolder {
TextView txtProject;
TextView txtDescription;
TextView txtIn;
TextView txtOut;
ProgressBar progressBar;
SearchResults search;
}
}
SearchResults
private String progress="";
public void setProgress(String progress){
this.progress=progress;
}
public String getProgress()
{
return progress;
}
I'm getting this erorr is because setProgress
require int
but I have a String
datatype in get
and setProgress
. Is there away I can use to solve the error line without changing the datatype in SearchResults
?
Upvotes: 0
Views: 1089
Reputation: 201447
how can I apply this to this line
holder.progressBar.setProgress(searchArrayList.get(position).getProgress());
You could use Integer.parseInt(String)
like,
holder.progressBar.setProgress(
Integer.parseInt(searchArrayList.get(position).getProgress()));
Based on your comment below, split the String
and then take the integral part. Something like,
String str = searchArrayList.get(position).getProgress();
String[] arr = str.split(":\\s*");
holder.progressBar.setProgress(Integer.parseInt(arr[1]));
Upvotes: 1