如何将值传递给AsyncTask Android
这是我第一次使用AsyncTask,对于传递值可能也有点困惑 我有4个如何将值传递给AsyncTask Android,android,android-asynctask,Android,Android Asynctask,这是我第一次使用AsyncTask,对于传递值可能也有点困惑 我有4个ArrayLists,其中包含应该插入数据库的数据。我希望这个插入在后台完成。通过从我拥有的4个ArrayList中获取传递值,将至少有50行插入数据库,一次插入1行 有人能指导我怎么做吗 现在,我创建了一个子类InsertData,它扩展了AsyncTask:: private class InsertData extends AsyncTask<Params, Progress, Result>{
ArrayList
s,其中包含应该插入数据库的数据。我希望这个插入在后台完成。通过从我拥有的4个ArrayList中获取传递值,将至少有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;
}
}
如果有人能给我一个如何实现这个的概述,那就太好了。你可以这样通过
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;
}
}
InsertData task = new InsertData (stg1, stg2, st3, stg4);
task.execute();
尝试以下操作,无论如何,您可以使用所需的参数为
InsertData
创建构造函数,将它们存储在InsertData
类字段中,并在doInBackground()中使用
您可以像这样直接将列表传递到doInBackground()
,然后在那里执行所有50次迭代
private class InsertData extends AsyncTask<List<String>, Progress, Result>{
@Override
protected Result doInBackground(List<String>... params) {
// TODO Auto-generated method stub
List<String> list1 = params[0];
List<String> list2 = params[1];
List<String> list3 = params[2];
List<String> list4 = params[3];
// Do the 50 iterations here.
return null;
}
}
不要对所有值使用ArrayList。。。只需使用一个Arraylist。你可以用豆子
e、 g
ArrayList aryitem=new ArrayList();
ItemBean是一个Bean类。。所以你可以在那里设置值。。然后从那里取回
for (int i = 0; i <aryitem; i++)
{
itemBean= new ItemBean();
itemBean.set(yourValues);
itemBean.set(yourValues);
aryItem.add(itemBean);
}
for(inti=0;i我想它可能会对您有所帮助..您可以这样传递值
调用InsertData(AsynkTask)
在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;
}
}
类InsertData扩展异步任务
{
上下文ctx;
阵列列表li1、li2、li3、li4;
公共插入数据(上下文ct、ArrayList l1、ArrayList l2、ArrayList l3、ArrayList l4)
{
ctx=ct;
这1.li1=l1;
这是li2=l2;
这1.li3=l3;
这1.li4=l4;
dialog=新进度对话框(ct);
setProgressStyle(ProgressDialog.STYLE_微调器);
setMessage(“正在加载..请稍候..”);
对话框。可设置可取消(true);
}
@凌驾
受保护的结果doInBackground(参数…参数)
{
//做你的工作。。。
返回null;
}
}
您可以将值传递给asynctask的构造函数或doInBackground().example@.doinBackground接收urlsYou可以使用构造函数来实现这一点,如我所说,我必须重复插入大约50次,我该怎么做?根据循环的大小,检查arraylist中有多少值可用。如果必须检索50次,则应使用我所说的Bean类。它这对你来说很容易,我会尽力给你回复的。这个答案也能解决这个问题吗?
private class InsertData extends AsyncTask<List<String>, Progress, Result>{
@Override
protected Result doInBackground(List<String>... params) {
// TODO Auto-generated method stub
List<String> list1 = params[0];
List<String> list2 = params[1];
List<String> list3 = params[2];
List<String> list4 = params[3];
// Do the 50 iterations here.
return null;
}
}
new InsertData().execute(list1, list2, list3, list4);
ArrayList<ItemBean> aryitem=new ArrayList<ItemBean>();
for (int i = 0; i <aryitem; i++)
{
itemBean= new ItemBean();
itemBean.set(yourValues);
itemBean.set(yourValues);
aryItem.add(itemBean);
}
ArrayList list1,list2,list3,list4;
InsertData insertd = new InsertData(list1,list2,list3,list4)
insertd.execute();
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;
}
}