Ich habe ein Fragment mit einem Listenansicht und setzen Sie Daten mit einer Abfrage darin. Wie kann ich Datenbankoperationen ausführen, um Daten auszuwählen und dann mithilfe von asynctask festzulegen, um eine Fortschrittsanzeige zu implementieren, wenn ich das Fragment in der Navigationsleiste auswähle?Wie kann ich Datenbankoperationen ausführen, die asynctask verwenden, um eine Fortschrittsanzeige zu implementieren?
Das ist mein Fragment:
public class FragmentOne extends Fragment {
ListView lv;
MyAdapter myAdapter;
SearchView sv;
ArrayList<MyObject> listMyObject;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_one, container, false);
return view;
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
sv = (SearchView) getView().findViewById(R.id.searchView);
lv = (ListView) getView().findViewById(R.id.listView);
setData("");
sv.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
setData(newText);
return false;
}
});
}
public void setData(String params) {
String query = "select *, count(*) as num from table where field_1 like '" + params + "%' group by field_1 order by field_1";
listMyObject= new ArrayList<>();
DBHelper dbHelper;
SQLiteDatabase sqLiteDatabase;
String ... ;
int ...;
dbHelper = DBHelper.getInstance(getActivity().getApplicationContext());
sqLiteDatabase = dbHelper.getReadableDatabase();
Cursor cursor = sqLiteDatabase.rawQuery(query, null);
if (cursor.getCount() > 0) {
if (cursor.moveToFirst()) {
do {
...
listMyObject.add(new MyObject(...));
} while (cursor.moveToNext());
}
}
arrayAdapter = new MyAdapter(getActivity(), R.layout.listview_row, listMyObject);
lv.setAdapter(myAdapter);
dbHelper.close();
}
Vielen Dank im Voraus.