0
をListViewコントロールを移入私はSQLiteのにFirebaseからデータをロードし、その後の断片でそれを表示しようとしているが、データは断片のみの第二の開口部の上に表示されます。 doInBackground関数myClass.myFunctionで更新データとそれにフラグメントに
public class Root_Exercises_Fragment_v2 extends BaseFragment {
public static final String TAG = "TAG1";
private ListView mListview;
private MyAdapter mAdapter;
private DBHelper dbHelper;
private SQLiteDatabase database;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.myLayout, container, false);
new AsyncClass().execute();
mListview = (ListView) view.findViewById(R.id.mListview);
return view;
}
class AsyncClass extends AsyncTask<Void, Void, Void> {
@Override
protected Void doInBackground(Void... parameter) {
MyClass myClass = new MyClass(getActivity());
myClass.myFunction();
return null;
}
@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
Log.v("TAG", "In postExecute");
dbHelper = new DBHelper(getActivity());
database = dbHelper.getReadableDatabase();
mAdapter = new MyAdapter(getActivity(), database.rawQuery(getString(R.string.myQuery), null)) {
};
mListview.setAdapter(mAdapter);
}
}
}
()は、SQLiteのデータとDBするFirebaseから欠落データダウンロードにFirebaseのデータを比較します。それは、私がログで見ることができるので、致命的に機能します。 また、notifyDataSetChangedをonPostExecuteに追加しようとしましたが、それは役に立たなかったです。 フラグメントの最初のオープン時にデータが表示されない理由が分かっている場合は、解決策を見つけるのを助けてください。
だけ明確にすることは、 'database.rawQuery()'で返されているカーソルのサイズを印刷することができます。それを印刷し、初めてサイズがゼロでないことを確認してください。 – Dibzmania
最初のopeninカーソルサイズは0です。これは、doInBackgroundの前にonPostExecute startが終了したようです。 onPostExecuteをdoInBackgroundが完了するまで待機させる方法はありますか? – Dmitriy
Android APIのドキュメントによると、あなたの言うことは不可能です。私はあなたがログを適切に入れて、再度チェックする必要があると思う – Dibzmania