java Android SQL删除行
我正试图使用滑动操作从“结帐”屏幕中删除一个项目。滑动正在工作,问题是删除表行并更新列表(在一个片段中)。在代码中,catch报告了一个空指针异常,但我就是找不到它
下面是我的签出片段(您会注意到我将sql删除代码放在了一个try/catch块中,这样程序就不会出错):
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;
return v;
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState){
final SwipeDetector swipeDetector = new SwipeDetector();
final ListView lv = getListView();
lv.setOnTouchListener(swipeDetector);
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
if (swipeDetector.swipeDetected()){
// do the onSwipe action
Log.d("Swipe", "spipe");
try{
Dashboard.datasource.removeProduct( (position + 1) + "");
lv.deferNotifyDataSetChanged();
}
catch(Exception e){
Log.e("Swipe Error", Log.getStackTraceString(e) );
}
} else {
// do the onItemClick action
}
}
});
}
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;
}
}
public class OrderTask extends AsyncTask<String, Void, JSONObject> {
protected void onPreExecute() {
}
protected JSONObject doInBackground(final String... args) {
// URL used to place an order.
String BASEURL = "http://api.vendture.com/v1/api.php?method=sendOrder&"
+ "username="
+ Dashboard.getInputUsername()
+ "&pass="
+ Dashboard.getInputPassword()
+ "&key=0694ca6ec483864e11d4e8867d0ca4db" + "&pName=";
// for loop to add names
for (Entry e : cart) {
BASEURL += e.getName() + ",";
}
BASEURL += "&pSku=";
for (Entry e : cart) {
BASEURL += e.getSku() + ",";
}
BASEURL += "&pQty=";
for (Entry e : cart) {
BASEURL += e.getQty() + ",";
}
Log.d("URL", BASEURL);
json = jParser.getJSONfromURL(BASEURL);
return json;
}// end doInBackground
protected void onPostExecute(JSONObject s) {
Log.d("Step: ", "AsyncTask, OnPostExecute");
try {
if (s.getString("error").equals("0")
&& s.getString("status").equals("Success!")){
Toast.makeText(getActivity().getBaseContext(),
"Order Successful", Toast.LENGTH_SHORT).show();
//Need command to clear all rows in the database here.
datasource.getDatabase().execSQL("delete from " + datasource.getDbHelper().TABLE_COMPANY);
}
else Toast.makeText(getActivity().getBaseContext(),
"Not Sure if it worked!!", Toast.LENGTH_SHORT).show();
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}// end onPostExecute
} // End Request
} // End Checkout Fragment
以下是我的删除代码,名为:
public void removeProduct(String id){
Log.d("Removing", "Removing id");
Log.d("Row to remove", id+"");
String[]whereArgs = new String[] {id};
int rem = database.delete(MySQLiteHelper.TABLE_COMPANY, MySQLiteHelper.COLUMN_ID+"=?", whereArgs);
Log.d("Affected Rows", rem+"");
}
注销输出:
06-13 11:10:05.771: E/Swipe Error(2803): java.lang.NullPointerException
06-13 11:10:05.771: E/Swipe Error(2803): at com.bluelabelhosting.安卓.vendturevending.Dashboard$CheckoutFragment$2.onItemClick(Dashboard.java:360)
06-13 11:10:05.771: E/Swipe Error(2803): at 安卓.widget.AdapterView.performItemClick(AdapterView.java:301)
06-13 11:10:05.771: E/Swipe Error(2803): at 安卓.widget.AbsListView.performItemClick(AbsListView.java:1507)
06-13 11:10:05.771: E/Swipe Error(2803): at 安卓.widget.AbsListView$PerformClick.run(AbsListView.java:3336)
06-13 11:10:05.771: E/Swipe Error(2803): at 安卓.widget.AbsListView.onTouchEvent(AbsListView.java:4632)
06-13 11:10:05.771: E/Swipe Error(2803): at 安卓.view.View.dispatchTouchEvent(View.java:7831)
06-13 11:10:05.771: E/Swipe Error(2803): at 安卓.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2435)
06-13 11:10:05.771: E/Swipe Error(2803): at 安卓.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2159)
06-13 11:10:05.771: E/Swipe Error(2803): at 安卓.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2441)
06-13 11:10:05.771: E/Swipe Error(2803): at 安卓.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2174)
06-13 11:10:05.771: E/Swipe Error(2803): at 安卓.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2441)
06-13 11:10:05.771: E/Swipe Error(2803): at 安卓.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2174)
06-13 11:10:05.771: E/Swipe Error(2803): at 安卓.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2441)
06-13 11:10:05.771: E/Swipe Error(2803): at 安卓.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2174)
06-13 11:10:05.771: E/Swipe Error(2803): at 安卓.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2441)
06-13 11:10:05.771: E/Swipe Error(2803): at 安卓.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2174)
06-13 11:10:05.771: E/Swipe Error(2803): at 安卓.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2441)
06-13 11:10:05.771: E/Swipe Error(2803): at 安卓.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2174)
06-13 11:10:05.771: E/Swipe Error(2803): at 安卓.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2441)
06-13 11:10:05.771: E/Swipe Error(2803): at 安卓.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2174)
06-13 11:10:05.771: E/Swipe Error(2803): at com.安卓.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:2326)
06-13 11:10:05.771: E/Swipe Error(2803): at com.安卓.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1612)
06-13 11:10:05.771: E/Swipe Error(2803): at 安卓.app.Activity.dispatchTouchEvent(Activity.java:2494)
06-13 11:10:05.771: E/Swipe Error(2803): at com.安卓.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:2274)
06-13 11:10:05.771: E/Swipe Error(2803): at 安卓.view.View.dispatchPointerEvent(View.java:8039)
06-13 11:10:05.771: E/Swipe Error(2803): at 安卓.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:4668)
06-13 11:10:05.771: E/Swipe Error(2803): at 安卓.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:4556)
06-13 11:10:05.771: E/Swipe Error(2803): at 安卓.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4150)
06-13 11:10:05.771: E/Swipe Error(2803): at 安卓.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4207)
06-13 11:10:05.771: E/Swipe Error(2803): at 安卓.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4176)
06-13 11:10:05.771: E/Swipe Error(2803): at 安卓.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:4261)
06-13 11:10:05.771: E/Swipe Error(2803): at 安卓.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4184)
06-13 11:10:05.771: E/Swipe Error(2803): at 安卓.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:4318)
06-13 11:10:05.771: E/Swipe Error(2803): at 安卓.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4150)
06-13 11:10:05.771: E/Swipe Error(2803): at 安卓.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4207)
06-13 11:10:05.771: E/Swipe Error(2803): at 安卓.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4176)
06-13 11:10:05.771: E/Swipe Error(2803): at 安卓.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4184)
06-13 11:10:05.771: E/Swipe Error(2803): at 安卓.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4150)
06-13 11:10:05.771: E/Swipe Error(2803): at 安卓.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:6302)
06-13 11:10:05.771: E/Swipe Error(2803): at 安卓.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:6240)
06-13 11:10:05.771: E/Swipe Error(2803): at 安卓.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:6211)
06-13 11:10:05.771: E/Swipe Error(2803): at 安卓.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:6382)
06-13 11:10:05.771: E/Swipe Error(2803): at 安卓.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:188)
06-13 11:10:05.771: E/Swipe Error(2803): at 安卓.os.MessageQueue.nativePollOnce(Native Method)
06-13 11:10:05.771: E/Swipe Error(2803): at 安卓.os.MessageQueue.next(MessageQueue.java:132)
06-13 11:10:05.771: E/Swipe Error(2803): at 安卓.os.Looper.loop(Looper.java:124)
06-13 11:10:05.771: E/Swipe Error(2803): at 安卓.app.ActivityThread.main(ActivityThread.java:5455)
06-13 11:10:05.771: E/Swipe Error(2803): at java.lang.reflect.Method.invokeNative(Native Method)
06-13 11:10:05.771: E/Swipe Error(2803): at java.lang.reflect.Method.invoke(Method.java:525)
06-13 11:10:05.771: E/Swipe Error(2803): at com.安卓.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1187)
06-13 11:10:05.771: E/Swipe Error(2803): at com.安卓.internal.os.ZygoteInit.main(ZygoteInit.java:1003)
06-13 11:10:05.771: E/Swipe Error(2803): at dalvik.system.NativeStart.main(Native Method)
共 (0) 个答案