user5256621
user5256621

Reputation:

Error:(136, 81) error: incompatible types: String cannot be converted to int

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

Answers (1)

Elliott Frisch
Elliott Frisch

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()));

Parse the value

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

Related Questions