3

クリック時にアクションバーのドロップダウンナビゲーションリストのアイテムの表示を変更するにはどうすればよいですか?クリックした後、表示されたアイテムに別のビューが表示されるようにします(レイアウトでは非表示に設定されています)。onNavigationItemSelectedからメソッドを取得しましActionBar.OnNavigationListenerたが、クリックされたアイテムのビューは渡されず、ナビゲーションスピナーでのアイテムの位置だけが渡されます。つまり、アクションバースピナーから選択したビューへの参照を取得できないのはなぜですか?listview onItemClick(からビューを取得できるようにOnItemClickListener()

4

3 に答える 3

2

ActionBarSpinnerリソース ID:android:id/action_bar_spinner

Spinnerリソース ID を取得します。

int resId = getResources().getIdentifier("action_bar_spinner", "id", "android");

Spinnerリソース ID を使用してウィジェットへの参照を取得します。

final Spinner spinner = (Spinner) getWindow().getDecorView().findViewById(resId);

これで、選択したビューにアクセスできるようになります:

CheckedTextView v = (CheckedTextView) spinner.getSelectedView();

で選択したビューをすぐに変更できますOnNavigationListener

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    getFragmentManager().beginTransaction()
    .replace(android.R.id.content, new MyFragment())
    .commit();

    SpinnerAdapter mSpinnerAdapter = ArrayAdapter.createFromResource(this,
            R.array.action_list, android.R.layout.simple_spinner_dropdown_item);

    getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);

    int resId = getResources().getIdentifier("action_bar_spinner", "id", "android");
    final Spinner spinner = (Spinner) getWindow().getDecorView().findViewById(resId);

    this.getActionBar().setListNavigationCallbacks(mSpinnerAdapter, new ActionBar.OnNavigationListener() {

        @Override
        public boolean onNavigationItemSelected(int itemPosition,
                long itemId) {
            CheckedTextView v = (CheckedTextView) spinner.getSelectedView();
            // Modify selected view.
            return true;
        }

    });
}
于 2014-08-19T17:33:05.770 に答える
0

私はこれを理解しようとしていただけで、なんとか追跡することができました。

これを行うために使用setSelectedNavigationItemします。

于 2012-06-30T15:36:28.260 に答える
0

あなたの navigationListener で、これを試すことができます:

OnNavigationListener navigationListener = new OnNavigationListener() {

  @Override
  public boolean onNavigationItemSelected(int itemPosition, long itemId) {
    View convertView = null;
    View view = adapter.getView(itemPosition, convertView, null);
    TextView myTextView = (TextView) view
        .findViewById(R.id.my_textView);
    Toast.makeText(getBaseContext(), myTextView.getText(),
        Toast.LENGTH_LONG).show();

    return true;
  }

次に、アダプターを介してアイテムを取得しています。私の唯一の問題は、取得した参照コンテンツを変更することです。私はそれを機能させることができないようです。

私はそれが役立つことを願っています

于 2012-09-11T13:14:19.200 に答える