У меня есть активность, имеющая записи из sqlitedatabase в списке. У меня есть OptionMenu с «значком удаления» Я хочу скрыть параметрMenu, когда в списке нет записи (listview пуст). и показать optionMenu, когда есть данные в списке. Я много пробовал, искал это. но не смог найти решение.android: нужна помощь в OnPrepareOptionsMenu
Вот мой Actiivity класс
package com.munawwar.sultan.cursoradapter;
import android.app.ActionBar.LayoutParams;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
import com.munawwar.sultan.R;
import com.munawwar.sultan.adapter.DBAdapter;
public class MeterAdapter extends Activity {
DBAdapter dbh;
SQLiteDatabase db;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.list_view_records);
dbh = new DBAdapter(this);
populateListview();
}
public void populateListview() {
SimpleCursorAdapter mycursor;
Cursor cursor;
cursor = dbh.getAllMeter();
startManagingCursor(cursor);
String[] fromfields = new String[] { DBAdapter.COLUMN_METER_DATE,
DBAdapter.COLUMN_METER_START, DBAdapter.COLUMN_METER_END };
int[] tofields = new int[] { R.id.meterdate, R.id.meterstart,
R.id.meterend };
mycursor = new SimpleCursorAdapter(this, R.layout.row_meter, cursor,
fromfields, tofields, 0);
ListView mylist = (ListView) findViewById(R.id.list);
// view if there is no record
View empty = getLayoutInflater().inflate(R.layout.no_record_found,
null, false);
addContentView(empty, new LayoutParams(LayoutParams.MATCH_PARENT,
LayoutParams.MATCH_PARENT));
mylist.setEmptyView(empty);
// mylist.setEmptyView(findViewById(android.R.id.empty));
mylist.setAdapter(mycursor);
}
// ===============================================================================
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar actions click
switch (item.getItemId()) {
case R.id.action_delete:
try {
AlertDialog.Builder builder = new AlertDialog.Builder(this)
.setMessage(
"Are you sure you want to delete all Traveling data?")
.setNegativeButton(R.string.yes,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int which) {
// *********
db = dbh.getWritableDatabase();
dbh.DeleteAllMeter();
db.close();
populateListview();
dialog.dismiss();
}
})
.setPositiveButton(R.string.no,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int which) {
dialog.dismiss();
}
});
AlertDialog alert = builder.create();
alert.show();
return true;
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// *******************
default:
return super.onOptionsItemSelected(item);
}
}
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
return super.onPrepareOptionsMenu(menu);
}
}
спасибо @david wasser! это сработало, но теперь у меня другая проблема. , когда я удаляю записи из списка. и список становится пустым. меню все еще отображается. как я могу скрыть это, когда я удаляю все записи, и после обновления списка опция menmenu также скрывается? –
bro! это сделано с помощью invalidateOptionsmenu(); еще раз спасибо –