【发布时间】:2018-06-23 20:09:54
【问题描述】:
我是 android 开发新手。我正在开发一个从服务器获取数据的应用程序。它工作正常,但在 UI 线程中工作时会滞后设备屏幕。所以我使用 asynctask 来获取该数据并在 recyclerview 中显示它,但它没有显示数据。请帮助我,谢谢:)
代码:-in oncreateView()
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view=inflater.inflate(R.layout.fragment_frag_news, container, false);
list=new ArrayList<>();
dlist=new ArrayList<>();
new DataLoader().execute();
recyclerView=view.findViewById(R.id.newsrecycler);
recyclerView.setHasFixedSize(true);
recyclerAdapter=new DisplayRecyclerAdapter(list,dlist,getContext());
recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
recyclerView.setAdapter(recyclerAdapter );
recyclerAdapter.notifyDataSetChanged();
return view;
}
和我的异步任务类
public class DataLoader extends AsyncTask{
@Override
protected void onPreExecute() {
super.onPreExecute();
pDialog = new ProgressDialog(getActivity());
pDialog.setMessage("Please wait...");
pDialog.setIndeterminate(false);
pDialog.setCancelable(false);
pDialog.show();
}
@Override
protected Object doInBackground(Object[] objects) {
myConnection=new MyConnection();
connection=myConnection.DatabaseConncetion1();
list.clear();
dlist.clear();
try {
statement = connection.createStatement();
resultSet = statement.executeQuery("select title,[desc] from events order by E_ID desc;");
while (resultSet.next()) {
list.add(resultSet.getString("title"));
dlist.add(resultSet.getString("desc"));
}
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Object o) {
super.onPostExecute(o);
pDialog.dismiss();
}
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
new DataLoader().execute();
}
【问题讨论】:
-
我只想从 mssql 数据库中获取数据。请告诉我该怎么做。谢谢
-
您正在为 doInBg 中的列表添加值,因此在 PostExecute() 上,只需调用此 ,adapter.notifyDataSetChanged() ,
-
感谢@notTdar 它的工作,但进度对话框没有关闭
-
if(pDialog!= null &&pDialog.isShowing()){ pDialog.dismiss(); },并从 onCreate 中删除 notifyDataSetChanged() 因为没有添加任何内容,仅在有新数据/或一些更改时使用
-
好的兄弟谢谢..我会这样做
标签: android database android-fragments arraylist android-recyclerview