Ich habe ein Problem in meiner App. Es ist ein Telefonbuch. Nach der Verwendung von AsyncTask ändern sich alle Farben!Geändert Farben nach der Verwendung von AsyncTask
Dies ist Screenshot vor AsyncTask mit:
Dies ist Screenshot nach AsyncTask mit:
Was ist falsch mit meiner app?
1: Mein Code (mit AsyncTask):
public class MainActivity extends Activity {
ArrayList<Contact> contacts;
private ContactAdapter contactAdapter;
private DbWorker db;
private ListView listView;
private Context context;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView = (ListView) findViewById(R.id.listview);
context = getApplicationContext();
new DbAsyncTask(context).execute();
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Intent intent = new Intent(MainActivity.this, ChangeContactActivity.class);
Contact contact = contactAdapter.getContact(position);
intent.putExtra("name", contact.getContactName());
intent.putExtra("phone", contact.getContactPhone());
intent.putExtra("category", contact.getContactCategory());
intent.putExtra("org", contact.getContactOrgName());
intent.putExtra("id", contact.getContactId());
startActivity(intent);
}
});
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, AddContactActivity.class);
startActivity(intent);
}
});
}
class DbAsyncTask extends AsyncTask<Void, Void, ArrayList<Contact>> {
private Context ctx;
public DbAsyncTask(Context ctx){
this.ctx = ctx;
}
@Override
protected ArrayList<Contact> doInBackground(Void... params) {
db = new DbWorker(ctx);
contacts = (ArrayList<Contact>) db.selectAllContacts();
return contacts;
}
@Override
protected void onPostExecute(ArrayList<Contact> contacts) {
contactAdapter = new ContactAdapter(ctx, contacts);
listView.setAdapter(contactAdapter);
}
}
}
Ohne AsyncTask Ich verpflichte:
listView = (ListView) findViewById(R.id.listview);
context = getApplicationContext();
new DbAsyncTask(context).execute();
und fügen:
db = new DbWorker(this);
listView = (ListView) findViewById(R.id.listview);
contacts = (ArrayList<Contact>) db.selectAllContacts();
contactAdapter = new ContactAdapter(this, contacts);
listView.setAdapter(contactAdapter);
Oder grundsätzlich neue 'DbAsyncTask (this) .execute();' –
@MuratK. Ja, sicher. aber ich dachte, die kleinste Änderung zu beantworten :) – waqaslam
@waqaslam. Danke – Krabs