Ich habe eine Android-Aktivität als Grundaktivität, die unter Layout -Android Basis Activity & Listview - Progress Bar Nicht sichtbar
Und unten ist die xml für das Layout
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_read_contacts"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="au.com.savedme.ReadContacts">
<ListView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/readContactLv" />
<ProgressBar
style="?android:attr/progressBarStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/readContactPb"
android:layout_alignParentBottom="false"
android:layout_alignParentRight="false"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true" />
<android.support.design.widget.FloatingActionButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:clickable="true"
app:fabSize="mini"
app:srcCompat="@mipmap/ic_cloud_upload_white_24dp"
android:id="@+id/readContactFab"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true" />
Ich beginne diese Aktivität von einer anderen Aktivität. Mein Ziel ist es, die Fortschrittsanzeige in der onCreate-Methode sichtbar zu machen und dann die Listenansicht zu laden, sobald die Listenansicht mit Elementen gefüllt ist, die ich unsichtbar machen möchte.
Meine Fragen sind
- wenn ich die Liste anzuzeigen beginnen bevöl der Fortschrittsbalken überhaupt keine Angelegenheit, die nicht sichtbar ist, was ich versuche.
- Wenn ich die Listenansicht ausfüllend überspringe, wird der Fortschrittsbalken deutlich sichtbar.
- Wenn ich die Listenansicht bearbeite gibt es eine signifikante Verzögerung in der Navigation von vorherigen Aktivitäten und der Bildschirm friert einfach ein und wird schwarz (und leer) und sobald die Liste ausgefüllt ist, kommt sie zurück, was keinen visuellen Hinweis gibt um das zu tun, was passiert (nicht erwünscht).
Was soll ich tun, um dies zu verhindern, ist unten meine onCreate Methode -
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_read_contacts);
pb = (ProgressBar) findViewById(R.id.readContactPb);
pb.setVisibility(View.VISIBLE);
// Variable initialisations
contactList = new ArrayList<>();
contactListTosave = new ArrayList<>();
mDatabase = FirebaseDatabase.getInstance().getReference();
userId = FirebaseAuth.getInstance().getCurrentUser().getUid();
mContactListView = (ListView) findViewById(R.id.readContactLv);
mContactListView.setOnItemClickListener(onClickListener);
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.readContactFab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
for (Contact contactToSave:contactListTosave){
mDatabase.child("contacts").child(userId).child(contactToSave.getFirstName()).setValue(contactToSave);
}
Intent i = new Intent(getApplicationContext(),ContactList.class);
startActivity(i);
}
});
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
if (mAdapter == null) {
mAdapter = new ContactArrayAdapter(ReadContacts.this, 0, contactList);
mContactListView.setAdapter(mAdapter);
}
checkPermissionToReadContact();
}
Und unten ist der Code für meine listAdapter -
import android.content.Context;
import android.os.Build;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.List;
/**
* Created by AppsWise on 15/10/16.
*/
public class ContactArrayAdapter extends ArrayAdapter<Contact> {
private Context context;
private List<Contact> contactsProperties;
private String TAG = "ContactArrayAdapter";
//constructor, call on creation
public ContactArrayAdapter(Context context, int resource, ArrayList<Contact> objects) {
super(context, resource, objects);
this.context = context;
this.contactsProperties = objects;
}
// Called when rendering the view
public View getView(int position, View convertView, ViewGroup parent) {
// get properties we are displaying
Contact contact = contactsProperties.get(position);
//Get inflater and inflate the XML layout for each item
LayoutInflater inflater = (LayoutInflater) context.getSystemService(MainActivity.LAYOUT_INFLATER_SERVICE);
View view = inflater.inflate(R.layout.contact_item, null);
TextView nameText = (TextView) view.findViewById(R.id.nameText);
TextView contactName = (TextView) view.findViewById(R.id.contactName);
TextView number = (TextView) view.findViewById(R.id.phoneText);
String completeName = "";
if(contact.getFirstName()!=null){
completeName = contact.getFirstName();
}
if(contact.getLastName()!=null){
completeName += " "+contact.getLastName();
}
if (completeName!=null && completeName.trim().length()>0) {
if (nameText!=null) {
nameText.setText(completeName.substring(0,1).toUpperCase());
}
contactName.setText(completeName);
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && contact.getIsUploaded()){
nameText.setBackgroundColor(context.getColor(R.color.colorAccent));
}
}
number.setText(contact.getPhone());
return view;
}
}
können Ihre XML-Datei anzeigen – Vadivel
Erstellen Sie eine Schnittstelle in Ihrer Adapterklasse und wenn der Adapter funktioniert, verwenden Sie diese Schnittstelle, um den abgeschlossenen Status an activity.then Sie können den Fortschritt in diesem Rückruf – Ak9637
@ Ak9637 Leider habe ich es nicht bekommen, können Sie bitte ein wenig mehr über das Erstellen einer Schnittstelle in der Adapterklasse erklären? –