【问题标题】:displaying a ProgressBar in an each item of a ListView在 ListView 的每个项目中显示 ProgressBar
【发布时间】:2011-02-22 10:29:03
【问题描述】:

我想为ListView 的每个项目添加一个ProgressBar

我正在像这样向ListView 添加适配器

RankAdapter adapter=new RankAdapter(model);
list.setAdapter(adapter);

RankAdapterRankHolder 类如下

class RankAdapter extends CursorAdapter {
    RankAdapter(Cursor c) {
        super(RankNew.this, c);
    }

    @Override
    public void bindView(View row, Context arg1, Cursor c) {
        // TODO Auto-generated method stub

        RankHolder holder = (RankHolder) row.getTag();

        holder.populateForm(c, helper);
    }

    @Override
    public View newView(Context ctxt, Cursor c, ViewGroup parent) {
        LayoutInflater inflater = getLayoutInflater();
        View row = inflater.inflate(R.layout.rankvalues, parent, false);

        RankHolder holder = new RankHolder(row);
        row.setTag(holder);

        return row;
    }
}

class RankHolder {

    private TextView url = null;
    private TextView googletext = null;
    private TextView alexatext = null;
    private View row = null;

    RankHolder(View row) {

        this.row = row;
        url = (TextView) row.findViewById(R.id.newrankurl);
        googletext = (TextView) row.findViewById(R.id.newrankgoogle);
        alexatext = (TextView) row.findViewById(R.id.newrankalexa);
    }

    void populateForm(final Cursor c, final RankHelper helper) {
        url.setText(helper.getUrl(c));
        googletext.setText(helper.getGoogle(c));
        alexatext.setText(helper.getAlexa(c));
    }
}

【问题讨论】:

标签: android listview progress-bar


【解决方案1】:

将 ProgressBar 添加到您的 Xml 并在java文件中这样做

class RankAdapter extends CursorAdapter
{

   RankAdapter(Cursor c){
        super(RankNew.this,c);
   }

@Override
public void bindView(View row, Context arg1,final Cursor c) {
    // TODO Auto-generated method stub

    final RankHolder holder=(RankHolder)row.getTag();
    holder.populateForm(c,helper);
}

@Override
public View newView(Context ctxt, Cursor c, ViewGroup parent) {
    LayoutInflater inflater=getLayoutInflater();
    View row=inflater.inflate(R.layout.rankvalues,parent,false);
    RankHolder holder=new RankHolder(row);
    dialogmain.dismiss();
    row.setTag(holder);
    return row;
    }
}




class RankHolder{
    private TextView url=null;
    private TextView googletext=null;
    private TextView alexatext=null;
    private View row=null;
    private ProgressBar mSpinner=null;

    RankHolder(View row){
        this.row=row;
        mSpinner =(ProgressBar)row.findViewById(R.id.progress);        
        mSpinner.setIndeterminate(true);
        mSpinner.setVisibility(View.VISIBLE);
        url=(TextView)row.findViewById(R.id.newrankurl);
        googletext=(TextView)row.findViewById(R.id.newrankgoogle);
        alexatext=(TextView)row.findViewById(R.id.newrankalexa);
    }

    void populateForm(final Cursor c,final RankHelper helper){
        new Thread(){
            public void run(){
                try{
                    Thread.sleep(300);
                }catch(Exception e){
                }
                thhandler.sendEmptyMessage(0);
            }
        }.start();
        thhandler=new Handler(){
            @Override
            public void handleMessage(Message msg){
                super.handleMessage(msg);
                mSpinner.setVisibility(View.INVISIBLE);
            }
        };
        url.setText(helper.getUrl(c));
        if(flag==0){
            updateValues(helper.getUrl(c).toString());
        }
        googletext.setText(helper.getGoogle(c));
        alexatext.setText(helper.getAlexa(c));
    }
}

【讨论】:

    【解决方案2】:

    尝试在您的R.layout.rankvalues xml 文件中添加一个ProgressBar,并在您不再需要时隐藏视图。

    【讨论】:

    • 我已经在 R.layout.rankvalues xml 中添加了 ProgressBar 但我不能
    猜你喜欢
    • 1970-01-01
    • 2015-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多