1
私のアプリに問題があります。それは電話帳です。 AsyncTaskを使用すると、すべての色が変わります!AsyncTaskを使用した後に変更された色
これはAsyncTaskを使用する前に、スクリーンショットです:
これはAsyncTaskを使用した後のスクリーンショットです:私のアプリと間違っ
いただきましたか?
1: (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);
}
}
}
AsyncTaskなければ私がコミット:
listView = (ListView) findViewById(R.id.listview);
context = getApplicationContext();
new DbAsyncTask(context).execute();
および追加:
db = new DbWorker(this);
listView = (ListView) findViewById(R.id.listview);
contacts = (ArrayList<Contact>) db.selectAllContacts();
contactAdapter = new ContactAdapter(this, contacts);
listView.setAdapter(contactAdapter);
それとも基本的に新しい 'DbAsyncTask(この).execute();' –
@MuratK。はい、もちろん。しかし、私は最小限の変更に答えると思った: – waqaslam
@ waqaslam。ありがとうございます – Krabs