Я новичок в кодировании Android и мне нужна помощь с моим проектом:
У меня есть функция, которую я вызываю из OnResume mainActivity. Функция перезагружает данные из базы данных и показывает их в виде списка.
Теперь, когда я захожу во второе Activity и вводю новые данные, данные сохраняются при вызове onPause of secondActivity. Вернувшись к mainActivity, я не вижу изменений, внесенных в представление списка, но когда я щелкаю по тому же элементу представления списка и снова перехожу ко второму действию, возвращаясь во второй раз, изменения начинают отображаться, и код работает правильно. Что может быть причиной того, что функция не работает в 1-й попытке?
Примечание: я также вызываю функцию из onCreate основной операции
РЕДАКТИРОВАТЬ 1:
функция для вызова
public void fill_list() {
cursor = db.rawQuery("SELECT * FROM " + GameEntry.TABLE + " WHERE " + GameEntry.G_DIFF + " = " + diff, null);
yesitis = cursor.moveToFirst();
if (yesitis)
count = cursor.getCount();
//int count=cursor.getCount();
listv = (ListView) findViewById(R.id.listview1);
listv.setAdapter(null);
arr.clear();
for (int j = 0; j < 15; j++) {
String data;
int j2 = j + 1;
data = String.valueOf(j2);
cursor3 = db.rawQuery("SELECT * FROM " + GameEntry.TABLE + " WHERE " + GameEntry.G_DIFF + " = " + diff+" AND "+GameEntry.G_LEVEL+" = "+j, null);
if (cursor3.moveToFirst()) {
cursor3.moveToPosition(0);
int showstate = cursor3.getColumnIndex(AppContract.GameEntry.G_STATE);
String temp1 = cursor3.getString(showstate);
if (temp1.equals("notStarted")) {
} else {
int showtime = cursor3.getColumnIndex(AppContract.GameEntry.time);
String temp2 = cursor3.getString(showtime);
data = data + " " + temp1 + " " + temp2;
}
}
arr.add(data);
}
ArrayAdapter<String> arradapt = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, arr) {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
TextView textView = (TextView) super.getView(position, convertView, parent);
switch (diff) {
case 1:
textView.setBackgroundColor(Color.parseColor("#83EEA4"));
break;
case 2:
textView.setBackgroundColor(Color.parseColor("#00C5F6"));
break;
case 3:
textView.setBackgroundColor(Color.parseColor("#FF416A"));
break;
}
textView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 25);
return textView;
}
};
listv.setAdapter(arradapt);
listv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> av, View view, int ii, long id) {
level_select=ii;
cursor2 = db.rawQuery("SELECT * FROM " + GameEntry.TABLE + " WHERE " + GameEntry.G_DIFF + " = " + diff + " AND " + GameEntry.G_LEVEL + " = " + ii, null);
if (cursor2.moveToFirst()) {
cursor2.moveToPosition(0);
g_exist = "yes";
} else {
g_exist = "no";
}
Intent send = new Intent(ListActivity.this, GameActivity.class);
send.putExtra("level", ii);
send.putExtra("difficulty", diff);
send.putExtra("exist", g_exist);
startActivity(send);
}
});
}
onResume:
@Override
protected void onResume() {
super.onResume();
Toast.makeText(getApplicationContext(), "onResumed called", Toast.LENGTH_LONG).show();
fill_list();
}
mainActivity onCreate:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_list);
MobileAds.initialize(this,
"ca-app-pub-6165188418561315~3404004371");
mAdView = (AdView) findViewById(R.id.adView);
AdRequest adRequest = new AdRequest.Builder().build();
mAdView.loadAd(adRequest);
diff = getIntent().getExtras().getInt("difficulty");
mhelper = new appdbhelper(this);
db = mhelper.getReadableDatabase();
fill_list();
Toast.makeText(getApplicationContext(), "sqlsize =" + String.valueOf(yesitis), Toast.LENGTH_SHORT).show();
}
onPause второго действия (функция enterdata обновляет указанную строку базы данных):
@Override
protected void onPause() {
super.onPause();
//Toast.makeText(getApplicationContext(), "onPause called", Toast.LENGTH_LONG).show();
timer.stop();
enterdata();
}
Заранее спасибо