Ich arbeite an meiner ersten App und bin irgendwann steckengeblieben. In meinem MainActivity gibt es eine onClick Methode, die auf eine Schaltfläche in der Haupt Layout-Datei verknüpft ist:Ansicht auf einen Wartebildschirm umstellen
<Button
android:id="@+id/button"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_centerHorizontal="true"
android:layout_below="@+id/IncludeAlbum"
android:text="@string/scan"
android:onClick="onClick"
/>
Dies ist der onClick:
public void onClick(View view){
view.setVisibility(view.GONE);
View v1 = (View) findViewById(id.Welcomemessage);
v1.setVisibility(v1.GONE);
//
// ... many more visibility changes
//
loaf = new ListOfAudioFiles(); // TAKES TIME
ListView lv = (ListView) findViewById(id.listView1);
adapter = new CustomAdapter(this, allComparisons); //loaf.songinfos
lv.setAdapter(adapter);
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adpterView, View view, int position,
long id) {
ListView lv = (ListView) findViewById(R.id.listView1);
long viewId = view.getId();
if (viewId == R.id.textView1) {
allComparisons.get(position).togglecb1();
adapter.notifyDataSetChanged();
} else {
allComparisons.get(position).togglecb2();
adapter.notifyDataSetChanged();
}
}
});
}
Nicht sehr sauber, ich weiß, aber Ich möchte die Struktur behalten. Der Konstruktor von listofaudiofiles macht viel Zeit.
Mein Problem ist, dass ich nicht die Ansicht auf einige warten kann Bildschirm vor dem Aufrufen des Konstruktors listofaudiofiles ändern, weder (Post) macht Arbeit ungültig noch setContentView auf ein neues Layout. Das Ändern der Ansicht durch setText gibt auch nichts. Nur wenn die Liste ausgefüllt ist, werden alle Änderungen der Ansicht angezeigt.
Wie kann ich Viewänderungen in onClick (...) vor dem Konstruktor Aufruf ListofAudioFiles erreichen, ohne meine Programmstruktur vollständig zu ändern?
, die wahrscheinlich ist, weil Sie laufen Ihre Langlauf-Methode auf dem UI-Thread/Stellen Sie sicher, dass eine AsyncTask verwenden oder einen anderen Weg, um Ihren Betrieb des Drückens auf einen Arbeitnehmer Faden. – vkislicins
Sie könnten dies nützlich finden: https://www.youtube.com/watch?v=0Z5MZ0jL2BM&list=PLWz5rJ2EKKc9CBxr3BVjPTPoDPLdPIFCE&index=2 – vkislicins