2012-02-26 3 views
0

Как перезагрузить ListView из AlertDialog? Этот AlertDialog порождается ContectMenu.Перезагрузка ListView из AlertDialog

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    registerForContextMenu(getListView()); 
    ...... 
    MatrixCursor cursor; 
    cursor = NameManager.getnameList(); 
    ........ 
    final SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, 
      R.layout.row, cursor, from, to); 
    setListAdapter(adapter); 
} 
....... 
....... 
case R.id.delete: 
      new AlertDialog.Builder(this) 
      .setTitle("Delete " + cursor.getString(1)) 
      .setMessage("Are you sure?") 
      .setPositiveButton("Ok", 
        new DialogInterface.OnClickListener() { 
       @Override 
       public void onClick(
         DialogInterface dialogInterface, int i) { 
        try { 
         ....... 
         // TODO reload listview 

        } catch (IOException e) { 
         e.printStackTrace(); 
         return; 
        } 
       } 
      }).setNeutralButton("Cancel", null) 
      .create().show(); 
      return true; 
+0

@slukian Помогите мне с этим? –

ответ

0

Поскольку я как 8 других AlertDialog с, что нужно будет освежать ListView, я придумал лучшее решение, которое уменьшает размер кода. Я создал новый метод refreshListView(), который вызывается каждый раз, когда я хочу обновить ListView.

...... 
...... 
public void onClick(
     DialogInterface dialogInterface, int i) { 
    try { 
     Runtime.getRuntime() 
     .exec("/system/xbin/rm -rf " 
       + selectedfolder 
       .getAbsolutePath() 
       .toString()); 
     refreshListView(); 

    } catch (IOException e) { 
     e.printStackTrace(); 
     return; 
    } 
} 
...... 
...... 
protected void refreshListView() { 
    fsitem = NameManager.getfsiList(); 
    NameManager.WriteName(fsitem); 
    MatrixCursor cursor = NameManager.getnameList(); 
    ListView list = (ListView) getListView(); 
    String[] from = { "name", "info", "status", "path", "folder", BaseColumns._ID }; 
    int[] to = { R.id.name, R.id.info, R.id.status, R.id.path }; 
    final SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, 
      R.layout.row, cursor, from, to); 
    list.setAdapter(adapter); 

} 
0

Вы можете позвонить адаптера в ListView в в notifyDataSetChanged() или notifyDataSetInvalidated()

+0

Но как сделать «адаптер» недоступным из 'onClick()' –

Смежные вопросы