如何通过长时间单击将菜单添加到Android列表项
我正在尝试向列表视图添加菜单。当用户长时间点击某个列表项时,我想让该菜单填充,实际上,我正在显示用户想要购买的项目列表,菜单将仅显示删除。。。这就是我显示列表的方式,如何为长时间单击添加Listener如何通过长时间单击将菜单添加到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
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;
}
});