Android和从ListView和sqlite数据库中删除项目

时间:2014-10-02 12:12:58

标签: android database android-listview android-sqlite

我正在尝试从listView和数据库中删除项目,但我无法应对。我抛出代码,我希望能提供帮助。我在屏幕上抛出showList的代码并保存到数据库sqlite。任何的想法?我也是初学者,任何帮助将不胜感激。我正在寻找教程,删除对我不起作用。我不知道为什么。如何在退出申请后清除我的清单?因为当我转到应用程序时,listView中的数据仍然可见。

  public class PropertyListAdapter extends BaseAdapter {


        Context context;
        ArrayList<Property> propertyList;

        public PropertyListAdapter(Context context, ArrayList<Property> list) {

            this.context = context;
            propertyList = list;
        }



        @Override
        public int getCount() {

            return propertyList.size();
        }

        @Override
        public Object getItem(int position) {

            return propertyList.get(position);
        }

        @Override
        public long getItemId(int position) {

            return position;
        }

        @Override
        public View getView(final int position, View convertView, ViewGroup arg2) {
            View vi = convertView;
            Property propertyListItems = propertyList.get(position);

            if (convertView == null) {
                LayoutInflater inflater = (LayoutInflater) context
                        .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                vi = inflater.inflate(R.layout.property_list_row, null);

            }
            TextView tvSlNo = (TextView) convertView.findViewById(R.id.tv_slno);
            tvSlNo.setText(String.valueOf(propertyListItems.getId()));
            TextView tvName1 = (TextView) convertView.findViewById(R.id.tv_name1);
            tvName1.setText(propertyListItems.getType());
            TextView tvName = (TextView) convertView.findViewById(R.id.tv_name);
            tvName.setText(propertyListItems.getAddress());
            TextView tvPhone = (TextView) convertView.findViewById(R.id.tv_phone);
            tvPhone.setText(String.valueOf(propertyListItems.getValue()));
            TextView tvPhone1 = (TextView) convertView.findViewById(R.id.tv_phone1);
            tvPhone1.setText(String.valueOf(propertyListItems.getDebt()));
            TextView tvName2 = (TextView) convertView.findViewById(R.id.tv_name2);
            tvName2.setText(propertyListItems.getNotes());

            Button deletePropertyItem = (Button) vi.findViewById(R.id.DeletePropertyListItem);
            deletePropertyItem.setTag(position);
            deletePropertyItem.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Integer index = (Integer)v.getTag();
                    propertyList.remove(position);
                    notifyDataSetChanged();
                }
            });
            return vi;

            }








db = new MeetingsDataBaseHelper(this);
        showList();
        add1.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                Double value1, debt;
                String editValueDb1,editDebtDb1;

                final Integer idEncounterToPass = AppMainScreen.getMeetingListClickedItem().getEncounter_id();
                String type = editTextTypeProperty.getText().toString();
                String address = editAddresse1.getText().toString();
                //  Double value1 = Double.valueOf(editValue1.getText().toString());
                String editValue1String = ReportMainScreen.editValue1.getText().toString();
                if (editValue1String.length() > 0)
                {
                    value1 = Double.valueOf(editValue1String);

                } else {

                    value1 = Double.valueOf("0.00");

                }
                // Double debt = editViewDebt1.getText().toString();
                String editDebtString = ReportMainScreen.editViewDebt1.getText().toString();
                if (editDebtString.length() > 0)
                {
                    debt = Double.valueOf(editDebtString);

                } else {

                    debt = Double.valueOf("0.00");

                }
                String notes = editNotesProperty.getText().toString();
                String encounter_id = String.valueOf(idEncounterToPass);
                String posted = "0";

                String query = "INSERT INTO property(type,address,value,debt,notes,encounter_id,posted) values ('"
                        + type + "','" + address + "','" + value1 + "','" + debt + "','" + notes + "','" + encounter_id + "','" + posted + "')";
                db.executeQuery(query);
                showList();
                editTextTypeProperty.setText("");
                editAddresse1.setText("");
                editValue1.setText("");
                editViewDebt1.setText("");
                editNotesProperty.setText("");
            }
        });



    private void showList() {

            ArrayList<Property> propertyList = new ArrayList<Property>();
            propertyList.clear();
            String query = "SELECT * FROM property ";
            Cursor c1 = db.selectQuery(query);
            if (c1 != null && c1.getCount() != 0) {
                if (c1.moveToFirst()) {
                    do {
                        Property propertyListItems = new Property();
                        propertyListItems.setId(Integer.valueOf(c1.getString(c1.getColumnIndex("id"))));
                        propertyListItems.setType(c1.getString(c1.getColumnIndex("type")));
                        propertyListItems.setAddress(c1.getString(c1.getColumnIndex("address")));
                        propertyListItems.setValue(Double.valueOf(c1.getString(c1.getColumnIndex("value"))));
                        propertyListItems.setDebt(Double.valueOf(c1.getString(c1.getColumnIndex("debt"))));
                        propertyListItems.setNotes(c1.getString(c1.getColumnIndex("notes")));
                        propertyList.add(propertyListItems);

                    } while (c1.moveToNext());
                }
            }
            c1.close();

            PropertyListAdapter propertyListAdapter = new PropertyListAdapter(ReportMainScreen.this, propertyList);
            first_list_view.setAdapter(propertyListAdapter);
            propertyListAdapter.notifyDataSetChanged(); // TODO check this reg. clearing subtables


            // propertyList.remove(propertyListAdapter);

        }

2 个答案:

答案 0 :(得分:0)

删除db

private void DeleteItemFormList() {
    Property property = new Property();
    ArrayList<Property> propertyList = new ArrayList<Property>();
    propertyList.clear();
    int id = property.getId();
    String delQuery = "DELETE FROM Property WHERE id='"+id+"' ";
    db.executeQuery(delQuery);
    showList();

    PropertyListAdapter propertyListAdapter = new PropertyListAdapter(ReportMainScreen.this, propertyList);
    first_list_view.setAdapter(propertyListAdapter);
    propertyListAdapter.notifyDataSetChanged(); // TODO check this reg. clearing subtables


    // propertyList.remove(propertyListAdapter);

}

答案 1 :(得分:0)

我认为你需要传递自动递增而不是位置的ID。

int index=propertyList.get(position).get(Id);
    Button deletePropertyItem = (Button) vi.findViewById(R.id.DeletePropertyListItem);
    deletePropertyItem.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
    propertyList.remove(index);
    notifyDataSetChanged();
    }
});