0

を持っていlistviewますが、「編集」アクション ボタンをクリックlistviewすると、別のレイアウト リソースを使用して、リストの各項目の横にボタンが表示されるようにします。

layout before: listitem_routine
layout I want after "edit" action button clicked: listitem_routine_edit

動作する私のコードは次のとおりです。

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_routines);

    datasource = new RoutinesDataSource(this);
    datasource.open();

    List<Routine> values = datasource.getAllRoutines();

    ArrayAdapter<Routine> adapter = new ArrayAdapter<Routine>(this,
        R.layout.listitem_routine, R.id.listitem_routine_name, values);
    setListAdapter(adapter);
  }

  @Override
  public boolean onOptionsItemSelected(MenuItem item) {
      ArrayAdapter<Routine> adapter = (ArrayAdapter<Routine>) getListAdapter();
      // Handle item selection
      switch (item.getItemId()) {
      case R.id.button_routines_edit:
            // change the list view adapter resource layout to *_edit
            // hide this button and show the "done editing (checkmark)" button
          return true;
      default:
          return super.onOptionsItemSelected(item);
      }
  }

R.id.button_routines_editクリックされたときにトーストを作ったので、うまくいくことはわかっています。そして美味しかったです。私はそれ以来、そのコードを削除しました...

R.id.button_routines_editがクリックされたときにレイアウトリソースを変更するにはどうすればよいですか? すべてのコードがそこにありますが、レイアウト リソースを変更する方法がわからないだけでlistview、新しい行レイアウトを表示するように更新することは明らかです...

4

1 に答える 1

4

次のようにアクション ボタンをクリックした後、新しいリソースでリストビューを再読み込みします。

  @Override
public boolean onOptionsItemSelected(MenuItem item) {

  // Handle item selection
  switch (item.getItemId()) {
  case R.id.button_routines_edit:
         ArrayAdapter<Routine> adapter = new ArrayAdapter<Routine>(this,
    R.layout.listitem_routine_edit, R.id.listitem_routine_name, values);

setListAdapter(adapter);
      return true;
  default:
      return super.onOptionsItemSelected(item);
  }
}
于 2012-12-24T05:57:57.767 に答える