错误:(136,81)错误:不兼容的类型:字符串无法转换为int

时间:2016-01-21 03:30:01

标签: java android string int progress-bar

我想在listView中显示进度条。下面的代码是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;

    }
}

SearchResult所

 private String progress="";

  public void setProgress(String progress){
        this.progress=progress;
    }

    public String getProgress()
    {
        return progress;
    }

我收到此错误是因为setProgress需要int,但我在Stringget中有setProgress数据类型。有没有我可以用来解决错误行而不改变SearchResults中的数据类型?

1 个答案:

答案 0 :(得分:1)

  

如何将此应用于此行holder.progressBar.setProgress(searchArrayList.get(position).getProgress());

您可以使用Integer.parseInt(String)之类的,

holder.progressBar.setProgress(
    Integer.parseInt(searchArrayList.get(position).getProgress()));

解析值

根据您在下面的评论,拆分String,然后选择整数部分。像,

String str = searchArrayList.get(position).getProgress();
String[] arr = str.split(":\\s*");
holder.progressBar.setProgress(Integer.parseInt(arr[1]));