【发布时间】:2014-11-25 04:00:27
【问题描述】:
我在一个类中声明了一个ArrayList,并在我启动异步任务时启动它;然后我在doInBackGround() 方法中添加项目,但之后,当我将数组列表发送到适配器的构造函数时,数组列表的大小仍然为0。
我真的不知道我做错了什么。请帮忙。
这是我的代码:
public class FindNewThingFragment extends android.support.v4.app.Fragment {
private PullRefreshLayout pullRefreshLayout;
private ProgressBar progressBar;
private ListView listView;
private ArrayList<ThingsItem> arrayList;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view=inflater.inflate(R.layout.fragment_found_new_thing,container,false);
listView=(ListView)view.findViewById(R.id.things_item_list_view);
progressBar=(ProgressBar)view.findViewById(R.id.things_item_progress_bar);
new LoadDongxiData().execute();
ThingsItemListViewAdapter adapter=new ThingsItemListViewAdapter(getActivity(),arrayList);
listView.setAdapter(adapter);
return view;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
}
private class LoadDongxiData extends AsyncTask<Void,Void,Void> {
public LoadDongxiData(){
arrayList=new ArrayList<ThingsItem>();
}
@Override
protected Void doInBackground(Void... voids) {
doSomething();
for(int i=0;i<10;i++){}
arrayList.add(new ThingsItem(itemImageUrl, itemName, price, userIconUrl, userName, userComment, numberOfLikes, numberOfAddDouToList, numberOfReply, userHomePageLink, itemDetailLink));
}
}
}
}
}
【问题讨论】:
-
尝试将项目添加到 onPostExecute 列表中,并在那里设置适配器。
-
您确定将其设置为适配器之后?后台任务可能还没有完成。
-
@Thilo 只需在
onPostExecute()中调用notifyDataSetChanged()? :)
标签: java android android-listview arraylist android-adapter