Displaying a ProgressBar in Each ListView Element

I want to add ProgressBarto each itemListView

I am adding an adapter to ListView, like this

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

Classes RankAdapterand RankHolderare as follows

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));
    }
}
+3
source share
2 answers

Add a ProgressBar to your Xml and do it in a java file

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));
    }
}
+1
source

try adding ProgressBarto your xml file R.layout.rankvaluesand just hide the view when you no longer need it.

0
source

Source: https://habr.com/ru/post/1793824/


All Articles