Java 在android中分配Inner类时ArrayList数据变为null
我有资格在安卓系统中从数据库获取数据的最佳原因。 我的代码Java 在android中分配Inner类时ArrayList数据变为null,java,android,android-asynctask,Java,Android,Android Asynctask,我有资格在安卓系统中从数据库获取数据的最佳原因。 我的代码 class MyClass{ List<String> listdata; public void getData(){ new DownloadTask (){ protected void onPostExecute(List<String> result) { listdata = result; // listdata contain 10 records
class MyClass{
List<String> listdata;
public void getData(){
new DownloadTask (){
protected void onPostExecute(List<String> result) {
listdata = result;
// listdata contain 10 records
}
}.execute();
// here list data is null out side asynctask
listdata is null
}
private class DownloadTask extends AsyncTask<Void, Void, List<String>> {
protected List<Stirng> doInBackground() {
return data.getAllRecords();
}
}
}
如果有任何错误,请纠正我,Thanklistdata将在onPostExecute中分配一个值,该值将在doInBackground完成后的稍后点调用
doInBackgroundParams。。。此步骤用于执行后台操作
可能需要很长时间的计算
后台后在UI线程上调用OnPostExecuteSult
计算完成。背景计算的结果是
作为参数传递到此步骤
执行任务,然后尝试访问下一行中listdata的值。它将为空,因为任务尚未完成,onPostExecute尚未调用。它不是最终的。您没有使用封闭的值
class MyClass{
final List<String> listData;
public myClass(){
listData = new ArrayList<String>();
}
public void getData(){
new DownloadTask (){
protected void onPostExecute(List<String> result) {
listData.addAll(result);
listDataRetrieved();
};
}.execute();
private final void listDataRetrieved(){
assertTrue(listData != null && containsCorrectElements());
}
private class DownloadTask extends AsyncTask<Void, Void, List<String>> {
protected List<String> doInBackground() {
return data.getAllRecords();
}
}
}