Skip to content Skip to sidebar Skip to footer

Filter From Android Oncreateoptionsmenu Item

I want to add filter button to my onCreateOptionsMenu. When button was clicked i need to show layout with checkboxes and apply button. Only way that i know how to do this - start n

Solution 1:

You can do it By Using this Material Dialog https://github.com/drakeet/MaterialDialog Library and Below code, Just put the gravity of Dialog TOP|RIGHT.

privatevoidshowMaterialDialog() {

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


         alert = newMaterialDialog(this);
        ViewmView= getLayoutInflater().inflate(R.layout.custom_view_virtual_card, null);
        ListViewlistView= (ListView) mView.findViewById(R.id.listView);
        listView.setAdapter(arrayAdapter);
        listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
        AppCompatButtonbtnCancel= (AppCompatButton) mView.findViewById(R.id.btnCancel);
        AppCompatButtonbtnOk= (AppCompatButton) mView.findViewById(R.id.btnOk);

        btnOk.setOnClickListener(newView.OnClickListener() {
            @OverridepublicvoidonClick(View v) {
                startAsyncForRequestVirtualCard(selectedCardTypeId);
                alert.dismiss();
            }
        });
        btnCancel.setOnClickListener(newView.OnClickListener() {
            @OverridepublicvoidonClick(View v) {
                alert.dismiss();
            }
        });
        listView.setOnItemClickListener(newAdapterView.OnItemClickListener() {
            @OverridepublicvoidonItemClick(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"?><LinearLayoutxmlns: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"><TextViewandroid: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" /><Viewandroid:layout_width="match_parent"android:layout_height="0.25dp"android:background="@color/divider" /><ListViewandroid: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"/><LinearLayoutandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="right"android:layout_marginRight="10dp"><android.support.v7.widget.AppCompatButtonandroid: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.AppCompatButtonandroid: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>

Solution 2:

Don't create a new activity instead create a new java class in that apply your sorting logic to filter the content and when your button is pressed that activity should return all your sorted content using List class or ArrayList class or anything else then display it.

Post a Comment for "Filter From Android Oncreateoptionsmenu Item"