【问题标题】:how to create menu in android on click of list view?如何在单击列表视图时在 android 中创建菜单?
【发布时间】:2015-08-15 13:21:36
【问题描述】:

我正在尝试在 android 中创建菜单。实际上,当我长按列表项时,我想显示删除图标。 我试过这样。我创建了一个 my_menu.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/id_delete"

    android:title="Delete"
    android:icon="@drawable/delete"></item>
</menu>

然后我创建列表视图。我的列表视图显示在视图中,但是当我长按行时它没有显示删除图标。意味着当我长按行时我想显示菜单选项。我能够显示列表..但菜单不显示。

这是我的 java 代码。

public class MainActivity extends AppCompatActivity {
    ListView listView;
    ArrayList arrayList = new ArrayList();
    ArrayList selectionList = new ArrayList();


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        listView = (ListView) findViewById(R.id.list_view);

        Log.d("==", loadJSONFromAsset());
        try {
            JSONArray js = new JSONArray(loadJSONFromAsset());
            for (int i = 0; i < js.length(); i++) {
                JSONObject obj = js.getJSONObject(i);
                arrayList.add(obj.getString("name"));
            }
            //adp=new CustomAddapter(getApplicationContext(),R.layout.list_view);


            ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, arrayList);
            listView.setAdapter(adapter);
            listView.setChoiceMode(AbsListView.CHOICE_MODE_MULTIPLE);
            listView.setMultiChoiceModeListener(new AbsListView.MultiChoiceModeListener() {
                @Override
                public void onItemCheckedStateChanged(ActionMode mode, int position, long id, boolean checked) {
                    if (checked) {
                        selectionList.add(arrayList.get(position));
                        //  arrayList.add(arr.)
                    }

                }

                @Override
                public boolean onCreateActionMode(ActionMode mode, Menu menu) {
                    MenuInflater menuInflater = getMenuInflater();
                    menuInflater.inflate(R.menu.my_menu, menu);
                    return true;
                }

                @Override
                public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
                    return false;
                }

                @Override
                public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
                    return false;
                }

                @Override
                public void onDestroyActionMode(ActionMode mode) {

                }
            });


        } catch (JSONException e) {
            e.printStackTrace();
        }
    }

    public String loadJSONFromAsset() {
        String json = null;
        try {

            InputStream is = getAssets().open("data.json");

            int size = is.available();

            byte[] buffer = new byte[size];

            is.read(buffer);

            is.close();

            json = new String(buffer, "UTF-8");


        } catch (IOException ex) {
            ex.printStackTrace();
            return null;
        }
        return json;

    }


}

【问题讨论】:

    标签: android android-layout android-fragments android-intent android-activity


    【解决方案1】:

    创建上下文菜单:

    为您的列表视图注册上下文菜单:

    registerForContextMenu(listView);`
    

    然后,添加菜单项:

    @Override
    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo)
    {
        if(v.getId() == R.id.your_list_view)
        {
            menu.setHeaderTitle("My menu");
            menu.add(Menu.NONE, 0, 0, "Delete");
            menu.add(Menu.NONE, 1, 1, "Cancel");
            // etc...
        }
    }
    

    但就图标而言...

    上下文菜单:不支持项目快捷方式和项目图标。

    http://developer.android.com/reference/android/view/Menu.html

    但是,如果您搜索 SO,您可以找到方法(代码示例、库链接)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-12-14
      • 1970-01-01
      • 2019-09-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-31
      相关资源
      最近更新 更多