1

いくつかのゲームのリストビューを作成しましたが、ゲームが削除されると、リストビューから消えてしまいたいです。adapter.notifyDataSetChanged() を使用しようとしていますが、機能しません。

    public static final String MY_SETTINGS = "MySettings";
@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);



    DBHelpeR entry = new DBHelpeR(Loadmenu.this);
    entry.open();
    final ArrayAdapter<String> adapter =  new ArrayAdapter<String>(this,R.layout.list_item,entry.getGameNames());

    setListAdapter(adapter);
    entry.close();

    ListView lv = getListView();
    lv.setTextFilterEnabled(true);
    lv.setBackgroundResource(R.drawable.background);
    final AlertDialog.Builder builder = new AlertDialog.Builder(this);
    lv.setOnItemLongClickListener(new OnItemLongClickListener(){
        public boolean onItemLongClick(AdapterView<?> parent, final View view,
                int position, long id) {

            String gamename = ((TextView) view).getText().toString();
            builder.setTitle("Slet " + gamename + "?");
            builder.setItems(new CharSequence[]{"Slet"} , new DialogInterface.OnClickListener() {

                // Click listener

                public void onClick(DialogInterface dialog, int item) {
                    DBHelpeR entry = new DBHelpeR(Loadmenu.this);
                    entry.open();
                    int game_id = entry.getGameID(((TextView) view).getText().toString());
                    Log.d("load",Integer.toString(game_id));
                    entry.deleteGame(game_id);
                    entry.close();
                    adapter.notifyDataSetChanged();
                }

            });
            builder.show();
            return true;
        }

    });
}
4

2 に答える 2

2
final ArrayAdapter<String> adapter =  new ArrayAdapter<String>(this,R.layout.list_item,entry.getGameNames());

上記の行を以下の ::: に置き換えます。

ArrayList<String> entries = entry.getGameNames();
final ArrayAdapter<String> adapter =  new ArrayAdapter<String>(this,R.layout.list_item,entries);

削除するときは、次の 2 行をもう一度 dcall してください::

entries = entry.getGameNames();
adapter.notifyDataSetChanged();

更新しました::

adapter.notifyDataSetChanged(); を呼び出す前にもう一度。以下の行を呼び出します::

final ArrayAdapter<String> adapter =  new ArrayAdapter<String>(getApplicationContext(), R.layout.list_item, entry.getGameNames());
setListAdapter(adapter);
于 2012-04-21T15:00:48.387 に答える
0

電話

final ArrayAdapter<String> adapter =  new ArrayAdapter<String>(this,R.layout.list_item,entry.getGameNames());
setListAdapter(adapter);

電話する前にもう一度

adapter.notifyDataSetChanged();

注: 変更を表示するには、配列を変更したことを確認してください。

于 2012-04-21T15:12:42.687 に答える