【问题标题】:Error:(136, 81) error: incompatible types: String cannot be converted to int错误:(136, 81) 错误:不兼容的类型:字符串无法转换为 int
【发布时间】:2016-01-21 03:30:01
【问题描述】:

我想在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;

    }
}

搜索结果

 private String progress="";

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

    public String getProgress()
    {
        return progress;
    }

我收到此错误是因为 setProgress 需要 int 但我在 getsetProgress 中有一个 String 数据类型。是否可以在不更改SearchResults 中的数据类型的情况下解决错误行?

【问题讨论】:

  • String.valueOf(int)Integer.parseInt(String)

标签: java android string int progress-bar


【解决方案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]));

【讨论】:

    猜你喜欢
    • 2014-05-25
    • 1970-01-01
    • 2018-05-28
    • 1970-01-01
    • 1970-01-01
    • 2017-10-03
    • 2016-09-05
    • 2023-03-26
    • 2023-01-18
    相关资源
    最近更新 更多