4

これは私が AsyncTask を使用するのは初めてで、おそらく値の受け渡しについても少し混乱しています。

ArrayList<String>データベースに挿入する必要があるデータを含む4 つの s があります。この挿入をバックグラウンドで実行したい。データベースに挿入される行は最低50行あり、私が持っている4つの配列リストから値を渡すことにより、一度に1行が挿入されます。

誰かがこれを行う方法を教えてもらえますか?

ここで、AsyncTask ::: を拡張するサブクラス InsertData を作成します。

private class InsertData extends AsyncTask<Params, Progress, Result>{

        @Override
        protected Result doInBackground(Params... params) {
            // TODO Auto-generated method stub
            return null;
        }   
}

4 つの配列リストに値があり、各配列リストから 1 つのエントリを取得し、4 つの値をデータベースに渡す必要があります。これらの 4 つの値を AsyncTask に渡すにはどうすればよいですか。また、arraylist にエントリが存在するまでこれを繰り返すにはどうすればよいですか。

以下は、データベースに 1 行を挿入するデータベース メソッドです :::

public void insert_row(int count, String image_url, String name, String number) {
        // TODO Auto-generated method stub

        db.execSQL("INSERT INTO contacts VALUES('"+ count +"', '"+ image_url +"', '"+ name +"', '"+ number +"')");
    }

誰かがこれを実装する方法の概要を教えてくれれば、それは素晴らしいことです。

4

5 に答える 5

0

私はそれがあなたを助けるかもしれないと思う..あなたはこのような値を渡すことができます..

InsertData (AsyncTask) の呼び出し

ArrayList list1,list2,list3,list4;

InsertData insertd = new InsertData(list1,list2,list3,list4)
insertd.execute();

InsertData.java で

class InsertData extends AsyncTask<Object, Object, Object>
{
    Context ctx;
    ArrayList li1,li2,li3,li4;
    public InsertData(Context ct,ArrayList l1,ArrayList l2,ArrayList l3,ArrayList l4)
    {
        ctx = ct;

        this.li1 = l1;
        this.li2 = l2;
        this.li3 = l3;
        this.li4 = l4;

        dialog = new ProgressDialog(ct);
        dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
        dialog.setMessage("Loading.. Please Wait..");
        dialog.setCancelable(true);
    }

        @Override
        protected Result doInBackground(Params... params)
        {
            // Do your Work...

            return null;
        }   
}
于 2013-04-09T06:36:27.840 に答える
0

あなたはこのように渡すことができます

private class InsertData extends AsyncTask<Params, Progress, Result>{

    public InsertData(String stg1, String stg2, String stg3, String stg4) {

    } 

    @Override
    protected Result doInBackground(Params... params) {
        // TODO Auto-generated method stub
        return null;
    }   
}

このように asynctask を呼び出します

InsertData task = new InsertData (stg1, stg2, st3, stg4);    
task.execute();
于 2013-04-09T06:08:24.460 に答える