如何将值传递给AsyncTask Android

Vam*_*lla 4 android android-asynctask

这是我第一次使用AsyncTask,也可能有点混淆,关于传递值.

我有4 ArrayList<String>秒,其中包含应插入数据库的数据.我希望这个插入在后台完成.通过从我拥有的4个arraylists中传递值,将至少有50行插入到数据库中,并且一次插入1行.

有人可以指导我如何做到这一点?

现在我创建一个子类InsertData,它扩展了AsyncTask :::

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

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

我有4个arraylists中的值,我需要从每个arraylist中检索1个条目并将4个值传递给数据库.我如何将这4个值传递给AsyncTask,以及如何重复此操作直到arraylists中有条目.

这是将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 +"')");
    }
Run Code Online (Sandbox Code Playgroud)

如果有人能给我一个如何实现这个的概述,那就太好了.

Rod*_*ler 8

尝试以下操作,无论如何,您可以InsertData使用您需要的参数创建构造函数,将它们存储在InsertData类字段中并使用doInBackground().

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

            @Override
            protected Result doInBackground(ArrayList... params) {
                // TODO Auto-generated method stub
                ArrayList list1 = params[0];
                ArrayList list2 = params[1];
                ...
                return null;
            }   
    }
Run Code Online (Sandbox Code Playgroud)

呼叫:

InsertData task = new InsertData();
task.execute(yourList1, yourList2, yourList3...);
Run Code Online (Sandbox Code Playgroud)