Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何通过长时间单击将菜单添加到Android列表项_Android_Android Listview_Android Listfragment - Fatal编程技术网

如何通过长时间单击将菜单添加到Android列表项

如何通过长时间单击将菜单添加到Android列表项,android,android-listview,android-listfragment,Android,Android Listview,Android Listfragment,我正在尝试向列表视图添加菜单。当用户长时间点击某个列表项时,我想让该菜单填充,实际上,我正在显示用户想要购买的项目列表,菜单将仅显示删除。。。这就是我显示列表的方式,如何为长时间单击添加Listener public static class CheckoutFragment extends ListFragment { /** * * The fragment argument representing the section number for this

我正在尝试向列表视图添加菜单。当用户长时间点击某个列表项时,我想让该菜单填充,实际上,我正在显示用户想要购买的项目列表,菜单将仅显示删除。。。这就是我显示列表的方式,如何为长时间单击添加Listener

public static class CheckoutFragment extends ListFragment {
    /**
     * 
     * The fragment argument representing the section number for this
     * fragment.
     */
    private static final String ARG_SECTION_NUMBER = "section_number";

    public List<Entry> cart;
    JSONObject json;
    jsonParser jParser = new jsonParser();
    JSONArray directory;

    /**
     * Returns a new instance of this fragment for the given section number.
     */
    public static Fragment newInstance(int sectionNumber) {
        CheckoutFragment fragment = new CheckoutFragment();
        Bundle args = new Bundle();
        args.putInt(ARG_SECTION_NUMBER, sectionNumber);
        fragment.setArguments(args);

        return fragment;
    }

    public CheckoutFragment() {

    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        cart = Dashboard.datasource.getAllProducts();
        View v = inflater.inflate(R.layout.fragment_checkout, container,
                false);
        Button order = (Button) v.findViewById(R.id.order);
        order.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                Toast.makeText(v.getContext(), "Order Submitted",
                        Toast.LENGTH_SHORT).show();
                submitOrder();
                flag = false;

            }
        });

        CheckoutArrayAdapter checkoutAdapter = new CheckoutArrayAdapter(
                container.getContext(), R.layout.fragment_checkout,
                R.layout.checkout_list_item, cart);
        setListAdapter(checkoutAdapter);



        Dashboard.datasource = DisplayProduct.datasource;

        getListView().setOnItemLongClickListener(new AdapterView.OnItemLongClickListener()
        {
            @Override
            public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id)
            {
                return false;
                // Show menu for item in position.
            }
        });

        return v;


    }

    protected void submitOrder() {

        OrderTask order = new OrderTask();
        order.execute();

    }

    @Override
    public void onAttach(Activity activity) {
        super.onAttach(activity);
        ((Dashboard) activity).onSectionAttached(getArguments().getInt(
                ARG_SECTION_NUMBER));
    }

    public class CheckoutArrayAdapter extends ArrayAdapter<Entry> {
        private final LayoutInflater mInflater;
        private List<Entry> cart;

        public CheckoutArrayAdapter(Context context, int listViewLayout,
                int listItemLayout, List<Entry> cartItems) {
            super(context, listViewLayout, listItemLayout, cartItems);
            mInflater = (LayoutInflater) context
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            cart = cartItems;
        }

        /**
         * Populate new items in the list.
         */
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            View view;

            if (convertView == null) {
                view = mInflater.inflate(R.layout.checkout_list_item,
                        parent, false);
            } else {
                view = convertView;
            }
            Entry item = getItem(position);
            ((TextView) view.findViewById(R.id.cart_entry)).setText(item
                    .getQty()
                    + "x  "
                    + item.getName()
                    + "\t"
                    + item.getSku() + " ");



            return view;
        }
    }

您可以使用ListView的。像这样:

getListView().setOnItemLongClickListener(new AdapterView.OnItemLongClickListener()
{
    @Override
    public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id)
    {
        // Show menu for item in position.
    }
});

有一个关于长按关联菜单的教程:

还有一个类似的问题:

以下是liistview中任意一行的longpress操作代码

listView.setOnItemLongClickListener(new OnItemLongClickListener() {
   @Override
   public boolean onItemLongClick(AdapterView<?> arg0, View arg1, int arg2,
   long arg3) {
    // TODO Auto-generated method stub

        return false;
   }
});

我得到以下错误:06-09 15:37:21.936:E/AndroidRuntime18980:致命异常:main 06-09 15:37:21.936:E/AndroidRuntime18980:java.lang.IllegalStateException:内容视图尚未创建06-09 15:37:21.936:E/AndroidRuntime18980:在android.app.ListFragment.EnsuRelistFragment.java:386 06-09 15:37:21.936:E/AndroidRuntime18980:at android.app.ListFragment.getListViewListFragment.java:280 06-09 15:37:21.936:E/AndroidRuntime18980:at com.bluelabelhosting.android.VendureVending.Dashboard$CheckoutFragment.onCreateViewDashboard.java:342代码已更新。@user1890328抱歉,您是对的。改为覆盖onViewCreated。编辑答案以反映这一点。
listView.setOnItemLongClickListener(new OnItemLongClickListener() {
   @Override
   public boolean onItemLongClick(AdapterView<?> arg0, View arg1, int arg2,
   long arg3) {
    // TODO Auto-generated method stub

        return false;
   }
});