从Android onCreateOptionsMenu项目

时间:2017-06-10 17:33:58

标签: android

我想在我的onCreateOptionsMenu中添加过滤器按钮。单击按钮时,我需要显示带有复选框的布局并应用按钮。

我知道如何执行此操作 - 从onOptionsItemSelected启动新活动并在那里执行所有操作。但是有更有效的方法吗?没有离开当前的活动。弹出窗口等等。

2 个答案:

答案 0 :(得分:1)

  

您可以使用此材料对话框执行此操作   https://github.com/drakeet/MaterialDialog图书馆及以下代码,Just   把对话的重力放在TOP | RIGHT。

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>

答案 1 :(得分:0)

不要创建新的活动而是创建一个新的java类,其中应用排序逻辑来过滤内容,当按下按钮时,该活动应该使用List类或ArrayList类或其他任何内容返回所有已排序的内容。显示它。