Note that there are some explanatory texts on larger screens.

plurals
  1. POUpdation of progress bar on orientation change in android
    text
    copied!<p>I have a fragment and I am setting listview on fragment.</p> <p>Following is the code:</p> <pre><code>public class AttachmentsFragment extends Fragment { ListView lstView = null; @Override public void onActivityCreated(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onActivityCreated(savedInstanceState); } @Override public void onAttach(Activity activity) { // TODO Auto-generated method stub super.onAttach(activity); } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //retains fragment instance across Activity re-creation setRetainInstance(true); objects = new ArrayList&lt;AttachModel&gt;(); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = null; view = inflater.inflate(R.layout.tab_attachment, container, false); lstView = (ListView) view.findViewById(R.id.listViewAttachment); adapter = new AttachAdapter(getActivity(), 0, 0, objects); lstView.setAdapter(adapter); return view; } </code></pre> <p>}</p> <p>In the adapter I have a progress bar and a textview to show the progress of the progress bar. A button to start and stop the progress bar</p> <pre><code>public class AttachAdapter extends ArrayAdapter&lt;AttachModel&gt; implements OnClickListener { Context context; ArrayList&lt;AttachModel&gt; objects = new ArrayList&lt;AttachModel&gt;(); AttachModel info; //Activity act; AttachModel model; public AttachmentsAdapter(Context context, int resource, int textViewResourceId, ArrayList&lt;AttachmentsModel&gt; objects) { super(context, textViewResourceId, textViewResourceId, objects); this.context = context; this.objects = objects; } // no. of attachments available @Override public int getCount() { return objects.size(); } @Override public AttachmentsModel getItem(int position) { return objects.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, final ViewGroup parent) { View row = convertView; ViewHolder holder = null; if(null == row) { LayoutInflater inflater = (LayoutInflater)getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); row = inflater.inflate(R.layout.attachment_list_item, parent, false); //textview for showing progress holder.textViewProgress = (TextView) row.findViewById(R.id.txtViewPg); //progress bar to show the progress holder.progressBar = (ProgressBar) row.findViewById(R.id.pgBar); holder.progressBar.setTag(position); holder.textViewProgress.setVisibility(TextView.VISIBLE); holder.img_view_fileIcon.setVisibility(ImageView.VISIBLE); holder.progressBar.setVisibility(ProgressBar.VISIBLE); //to start stop the progress bar holder.button = (Button)row.findViewById(R.id.img_btn_download); holder.button.setVisibility(Button.VISIBLE); holder.button.setTag(position); holder.button.setOnClickListener(this); row.setTag(holder); } else { holder = (ViewHolder) row.getTag(); } return row; } private class ViewHolder { TextView textViewProgress; ProgressBar progressBar; Button button; boolean downloadFlag = false; } @Override public void onClick(View v) { View vParent=(View) v.getParent(); ViewHolder tempHolder = null; tempHolder=(ViewHolder) vParent.getTag(); //toggle button like functionality if(!tempHolder.downloadFlag) { tempHolder.downloadFlag = true; tempHolder.progressBarStatus = 0; async = new AsyncTaskAttachments(tempHolder, objects.get(Integer.parseInt(v.getTag().toString())).getFilePath()); tempHolder.async.execute(); objects.get((Integer)tempHolder.progressBar.getTag()).setAsyncTask(tempHolder.async); }else { tempHolder.downloadFlag = false; tempHolder.progressBar.setProgress(0); tempHolder.textViewProgress.setVisibility(TextView.GONE); tempHolder.textViewProgress.setText(""); tempHolder.progressBarStatus = 0; tempHolder.async.cancel(true); } } public class AsyncTaskAttachments extends AsyncTask&lt;Void, Void, Void&gt; { private ViewHolder holder; public AsyncTaskAttachments(ViewHolder holder, String filePath) { this.holder = holder; this.filePath = filePath; } public void attach(Activity act) { this.act = act; } @Override protected Void doInBackground(Void... params) { // TODO Auto-generated method stub holder.progressBarStatus = 0; for(int i=0; i&lt;=10; i++) { try { Thread.sleep(1000); holder.progressBarStatus = i*10; if(isCancelled()) { break; } publishProgress(); }catch (Exception e) { // TODO: handle exception } } return null; } /* (non-Javadoc) * @see android.os.AsyncTask#onPostExecute(java.lang.Object) */ @Override protected void onPostExecute(Void result) { // TODO Auto-generated method stub super.onPostExecute(result); } /* (non-Javadoc) * @see android.os.AsyncTask#onPreExecute() */ @Override protected void onPreExecute() { // TODO Auto-generated method stub super.onPreExecute(); holder.progressBarStatus = 0; holder.textViewProgress.setText("" + holder.progressBarStatus + "%"); holder.progressBar.setProgress(holder.progressBarStatus); } /* (non-Javadoc) * @see android.os.AsyncTask#onProgressUpdate(Progress[]) */ @Override protected void onProgressUpdate(Void... values) { // TODO Auto-generated method stub super.onProgressUpdate(values); // TODO Auto-generated method stub holder.progressBar.setProgress(holder.progressBarStatus); holder.textViewProgress.setText("" + holder.progressBarStatus + "%"); } } } </code></pre> <p>Note: This is just to show the way I am doing it. This is just a glimpse. I need to know whether I am on the right track or not.</p> <p>On Orientation change, the progress bar is not able to retain and start the progress from where the orientation change.</p> <p>Thanks in advance</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload