データベースからいくつかの連絡先を listView に入力するために AsyncTask クラスを使用するコードがあります。
@Override
protected void onResume()
{
super.onResume();
new MyTask().execute((Object[]) null);
} // end method onResume
1.- なぜこれを渡す(Object[]) null)
のですか: 引数として?
AsyncTask コードを参照してください。
private class MyTask extends AsyncTask<Object, Object, Cursor>
{
//used for database conection purpose
ConectToDatabase databaseConnector =
new ConectToDatabase(ThisClass.this);
@Override
protected Cursor doInBackground(Object... params)
{
databaseConnector.open();
return databaseConnector.getMyContacts();
}
// use the Cursor returned from the doInBackground method
@Override
protected void onPostExecute(Cursor result)
{
//My cursorAdadper defined in early code
contactAdapter.changeCursor(result);
databaseConnector.close();
}
}
別の AsyncTask の問題:
delete.execute(new Long[] { rowID });
2.- なぜこれを渡すのですか:(new Long[] { rowID })
単純な (rowId) ではなく、引数として渡すのですか?
rowID は、前のクラスで選択した連絡先の ID を含む long 型です。それは ListActivity での拡張でした。この前のクラスには、データベースで取得したすべての連絡先が入力されていました。このクラスで (インテントによって) データが送信された場合、前のクラスで選択した単一の連絡先のデータを回復したいのですが、この場合、コードは次のように表示されます: new LoadMyContact().execute(rowID);
onResume メソッドにあります。
(rowID)
3.-引数として: のみを渡すのはなぜですか?
delete.execute(new Long[] { rowID });
メニュー内にあります。ユーザーが連絡先の削除を確認すると、その文を実行します。削除のコードは次のようになります (クリック ボタンの内側にあります)。
@Override
public void onClick(DialogInterface dialog, int button)
{
final ConectToDataBase databaseConnector =
new ConectToDataBase(MySecondClass.this);
AsyncTask<Long, Object, Object> deleteTask =
new AsyncTask<Long, Object, Object>()
{
@Override
protected Object doInBackground(Long... params)
{
databaseConnector.deleteContact(params[0]);
return null;
}
@Override
protected void onPostExecute(Object result)
{
finish();
delete.execute(new Long[] { rowID });
}
}; // end new AsyncTask
delete.execute(new Long[] { rowID });
} /
この 3 つの質問と感謝を手伝ってください。