2017-06-10 10 views
0

私のonCreateOptionsMenuにフィルタボタンを追加したいと思います。ボタンがクリックされたら、チェックボックスを使ってレイアウトを表示し、ボタンを適用する必要があります。Android onCreateOptionsMenuからのフィルタ項目

私がこれを行う方法を知っている唯一の方法 - onOptionsItemSelectedから新しいアクティビティを開始し、そこですべての操作を行います。しかし、より効率的な方法がありますか?現在の活動を離れることなくポップアップウィンドウなどのようなもの

答えて

1

あなたはこのマテリアルダイアログ https://github.com/drakeet/MaterialDialogライブラリとコードの下を使用することでそれを行うことができ、ジャスト ダイアログTOPの比重を置きます。

private void showMaterialDialog() { 

     final ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this, 
       android.R.layout.simple_list_item_single_choice); 
     for (Card card : cards) { 
      arrayAdapter.add(card.getName()); 
     } 


     alert = new MaterialDialog(this); 
     View mView = getLayoutInflater().inflate(R.layout.custom_view_virtual_card, null); 
     ListView listView = (ListView) mView.findViewById(R.id.listView); 
     listView.setAdapter(arrayAdapter); 
     listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE); 
     AppCompatButton btnCancel = (AppCompatButton) mView.findViewById(R.id.btnCancel); 
     AppCompatButton btnOk = (AppCompatButton) mView.findViewById(R.id.btnOk); 

     btnOk.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       startAsyncForRequestVirtualCard(selectedCardTypeId); 
       alert.dismiss(); 
      } 
     }); 
     btnCancel.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       alert.dismiss(); 
      } 
     }); 
     listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
       selectedCardTypeId = cards.get(position).getId(); 
       Log.d("request", cards.get(position).getId() + " " + cards.get(position).getName()); 
      } 
     }); 

     alert.setView(mView); 
     alert.show(); 

    } 

custom_view_virtual.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:background="@color/white" 
    android:orientation="vertical"> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_margin="10dp" 
     android:text="Select Card Type" 
     android:textAppearance="?android:attr/textAppearanceSmall" 
     android:textColor="@color/colorAccent" /> 

    <View 
     android:layout_width="match_parent" 
     android:layout_height="0.25dp" 
     android:background="@color/divider" /> 


    <ListView 
     android:id="@+id/listView" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:layout_marginTop="5dp" 
     android:divider="@color/transparent" 
     android:theme="@style/ProgressBarStyle"/> 

    <LinearLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="right" 
     android:layout_marginRight="10dp"> 

     <android.support.v7.widget.AppCompatButton 
      android:id="@+id/btnCancel" 
      style="@style/Widget.AppCompat.Button.Borderless" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_marginRight="5dp" 
      android:text="@string/cancel" 
      android:textColor="@color/colorAccent" 
      android:textSize="15sp" /> 

     <android.support.v7.widget.AppCompatButton 
      android:id="@+id/btnOk" 
      style="@style/Widget.AppCompat.Button.Borderless" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="@string/ok" 
      android:textColor="@color/colorAccent" 
      android:textSize="15sp" /> 
    </LinearLayout> 
</LinearLayout> 
0

ソートロジックを適用してコンテンツをフィルタリングする新しいJavaクラスを作成する代わりに、新しいアクティビティを作成しないでください。ボタンを押すと、ソートされたすべてのコンテンツが返されます。 ListクラスまたはArrayListクラスまたはそれ以外のものを表示します。 RIGHT |

+0

しかし、ユーザは、フィルタボタンを押す必要がありますので、何かを並べ替えることはできませんボタンを押す - >その後、チェック/チェックを外してチェックボックス(オプション)を押して適用されます。その後、私はどのように並べ替えるのか分かります。 –

+0

同じレイアウトに存在するチェックボックスはどこですか? – sumit

+0

@sumitこれは私の質問です。他のアクティビティにない場合、このチェックボックスはどこに配置しますか?私は現在の活動にそれのためのスペースがありません。 –

関連する問題