0

アンドロイドの達人!助けてほしい。2 つの ListView を含むアクティビティ レイアウトがあります。ロジックは、誰かがメニュー ListView の項目を選択すると、2 番目の ListView にもクリック可能な項目がいくつか入力されます。ネストされた setOnItemClickListener を使用して作成しました。最上位のリスナーは、メニューの ListView 項目にバインドされています。ネストされたリスナーは、入力された後、2 番目の ListView にバインドされます。入れ子にしなくてもOK。メニュー ListView には、現在選択されている項目が表示されます。入れ子にしたら。1つのことを除いて、すべて正常に動作します。私のメニュー ListView は、現在の項目選択マークを失います。どうしたの?メニューListViewで現在の選択が必要です。コードは次のとおりです。

menu.setOnItemClickListener(new AdapterView.OnItemClickListener() {
  @Override
  public void onItemClick(AdapterView<?> arg0,
  android.view.View arg1, int arg2, long arg3) {
    mainList = (ListView) findViewById(R.id.listView2);
    aaMainList = new cArrayAdapter(this, R.layout.mainlistitem, ALfiles);
    mainList.setAdapter(aaMainList);
    mainList.setOnItemClickListener(new AdapterView.OnItemClickListener(){          
      @Override
      public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
        lounchFileInDefaultVewer("file:/"+ ALfiles.get(arg2).getAbsolutePath());
        Log.d("ssapp", items[arg2].getAbsolutePath());
      }
    });
  }
});
4

2 に答える 2

0

最初のリストにフォーカスがなくなったため、選択したアイテムが最初のリストに表示されなくなった可能性があります。サポート ライブラリを使用して、2 つのリストを 2 つのフラグメントとして実装する方法を検討しましたか。このように、2 つのリストのアクションは互いに独立していますが、最初のリストから 2 番目のリストに値を設定することもできます。最初のリストも選択した項目を保持します。

http://developer.android.com/sdk/compatibility-library.html

于 2012-04-10T12:21:29.053 に答える
0

「メニュー」リストの要素が選択された後にのみ他のリストを表示したい場合は、デフォルトで visibility を設定するだけGONEで、最初の外側ですべてこれを行いますOnItemClickListener:

    final ListView mainList = (ListView) findViewById(R.id.listView2);
    aaMainList = new cArrayAdapter(this, R.layout.mainlistitem, ALfiles);
    mainList.setAdapter(aaMainList);
    mainList.setOnItemClickListener(new AdapterView.OnItemClickListener(){          
      @Override
      public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
        lounchFileInDefaultVewer("file:/"+ ALfiles.get(arg2).getAbsolutePath());
        Log.d("ssapp", items[arg2].getAbsolutePath());
      }
    });

最初にそれをvsibibleに設定するだけですOnItemClickListener:

menu.setOnItemClickListener(new AdapterView.OnItemClickListener() {
  @Override
  public void onItemClick(AdapterView<?> arg0,
  android.view.View arg1, int arg2, long arg3) {
    mainList.setVisibility(View.VISIBLE);
  }
});

また、上記のリスナーでアダプターの内容を変更することもできます。

于 2012-04-10T11:14:39.257 に答える