2017-01-23 4 views
0

Ich habe eine App, die Daten von json erhält und in der Recycler-Ansicht anzeigt. Wenn jede Recycler-Ansicht angeklickt wird, öffnet sich eine neue Aktivität, um den vollen Inhalt anzuzeigen. alles, was ich wissen will, ist, wie man einen Fortschrittsdialog zeigt, bevor die zweite Aktivität dankt. Hier ist mein CodeWie man Fortschrittsbalken einstellt, wenn auf die Recycler-Ansicht geklickt wird

 public CustomViewHolder(View view, Context ctx, ArrayList<FeedItem> feeditem) { 
     super(view); 

     view.setOnClickListener(this); 
     this.ctx = ctx; 
     this.feeditem = feeditem; 
     this.imageView = (ImageView) view.findViewById(R.id.thumbnail); 
     this.textView2 = (TextView) view.findViewById(R.id.date); 
     this.textView3 = (TextView) view.findViewById(R.id.excerpt); 
     this.categories = (TextView) view.findViewById(R.id.categories); 
     this.textView = (TextView) view.findViewById(R.id.title); 
    } 

    @Override 
    public void onClick(View v) { 
     int position = getAdapterPosition(); 
     FeedItem feeditem = this.feeditem.get(position); 
     Intent intent = new Intent(this.ctx, ScrollingActivity.class); 
     intent.putExtra("excerpt",feeditem.getExcerpt()); 
     intent.putExtra("content",feeditem.getContent()); 
     intent.putExtra("title",feeditem.getTitle()); 
     Html.fromHtml(String.valueOf(intent.putExtra("content",feeditem.getContent()))).toString(); 
     intent.putExtra("thumbnail",feeditem.getAttachmentUrl()); 
     this.ctx.startActivity(intent); 


    } 
+1

Gibt es eine Verzögerung, bevor Ihre andere Aktivität angezeigt wird? Warum möchten Sie einen Fortschrittsdialog anzeigen? –

+0

ja es gibt eine Verzögerung; Die Bilder brauchen Zeit, um zu laden, daher möchte ich den Fortschrittsdialog zeigen, wie Bilder gerendert werden @AbhishekJain –

Antwort

0

Sie haben mit ihm in Ihrer zweiten Aktivität zu beschäftigen. Dort sollten Sie alle Ihre Daten laden oder umfangreiche Verarbeitungsaufgaben in einem Hintergrundthread ausführen und die Benutzeroberfläche aktualisieren, sobald die Daten oder die Verarbeitung abgeschlossen sind.

AsyncTask ist entworfen, genau zu diesem Zweck auf dem UI-Thread

public class LoadDataTask extends AsyncTask<Void, Void, Void> { 
    public LoadDataTask(ProgressDialog progress) { 
    this.progress = progress; 
    } 

    public void onPreExecute() { 
    progress.show(); 
    } 

    public void doInBackground(Void... unused) { 
    ... load your image here ... 
    } 

    public void onPostExecute(Void unused) { 
    progress.dismiss(); 
    } 
} 

onPreExecute() und onPostExecute() Lauf zu dienen. So können Sie Ihre Benutzeroberfläche hier aktualisieren, z. B. das Bild anzeigen.

Ihre zweite Aktivität wie das jetzt aussehen sollte:

ProgressDialog progress = new ProgressDialog(this); 
progress.setMessage("Loading..."); 
new LoadDataTask(progress).execute(); 

Für weitere Hilfe, überprüfen Sie diese:

+0

Danke, es hat funktioniert –

Verwandte Themen