2016-07-19 4 views
0

У меня есть ListView. Я добавляю одну строку в базу данных sqlite, проверяя ее. (CheckBox) В то же время мне нужно удалить строку, которую я снял. Мне нужен идентификатор строки, которая хранится в моей таблице, из-за чего я могу удалить строку. Как мне это сделать ? Это мой CheckBox справка на код: Adapter.Как удалить определенную строку в Sqlite?

public class MainVacancyAdapter extends ArrayAdapter { 

    private List<VacancyModel> vacancyModelList; 
    private int resource; 
    private LayoutInflater inflater; 
    ArrayList<Boolean> isSelected; 
    SQLHelper sqlHelper; 

    public MainVacancyAdapter(Context context, int resource, List<VacancyModel> objects) { 
     super(context, resource, objects); 
     vacancyModelList = objects; 
     this.resource = resource; 
     sqlHelper = new SQLHelper(getContext()); 
     inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

     isSelected = new ArrayList<>(vacancyModelList.size()); 
     for (int i = 0; i < vacancyModelList.size(); i++) { 
      isSelected.add(false); 
     } 
    } 

    //Finding textViews and inserting data into them 
    @Override 
    public View getView(final int position, View convertView, final ViewGroup parent) { 
    ViewHolder holder = null; 

    if (convertView == null) { 
     holder = new ViewHolder(); 
     convertView = inflater.inflate(resource, null); 
     holder.tvHeader = (TextView) convertView.findViewById(R.id.tvHeader); 
     holder.tvProfileName = (TextView) convertView.findViewById(R.id.tvProfileName); 
     holder.tvSalary = (TextView) convertView.findViewById(R.id.tvSalary); 
     holder.tvPostCr = (TextView) convertView.findViewById(R.id.tvPostCr); 
     //holder.tvBody = (TextView) convertView.findViewById(R.id.tvBody); 
     holder.cbxFav = (CheckBox) convertView.findViewById(R.id.cbxFav); 

     convertView.setTag(holder); 
    } else { 
     holder = (ViewHolder) convertView.getTag(); 
     holder.cbxFav.setOnCheckedChangeListener(null); 
    } 
     holder.tvHeader.setText(vacancyModelList.get(position).getHeader()); 
     holder.tvProfileName.setText(vacancyModelList.get(position).getProfileName()); 
    holder.tvSalary.setText(vacancyModelList.get(position).getSalary()); 
     holder.tvPostCr.setText(vacancyModelList.get(position).getPostCreated()); 
     //holder.tvBody.setText(vacancyModelList.get(position).getBody()); 

     holder.cbxFav.setChecked(isSelected.get(position)); 

     holder.cbxFav.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
      @Override 
      public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 

       if (isChecked) { 
       //inserting the data into Favourite Table in sql 
        isSelected.set(position, true); 
        sqlHelper.createFavouriteTable(vacancyModelList.get(position)); 
        //Toast.makeText(getContext(), "Added to favourite", Toast.LENGTH_SHORT).show(); 

       } else { 
        isSelected.set(position, false); 
        sqlHelper.deleteFromFavouriteDatabase(position); 
        //Toast.makeText(getContext(), "Deleted from favourite", Toast.LENGTH_SHORT).show(); 
       } 
      } 
     }); 

     return convertView; 
    } 

    static class ViewHolder { 
     TextView tvHeader; 
     TextView tvProfileName; 
     TextView tvSalary; 
     TextView tvPostCr; 
     TextView tvBody; 
     CheckBox cbxFav; 
    } 
} 

метод SQLHelper class

public void deleteFromFavouriteDatabase(int rowID) { 
    SQLiteDatabase db = this.getWritableDatabase(); 
    db.delete(FAVOURITE.TABLE_NAME, FAVOURITE.KEY_ID + " = " + rowID, null); 
    db.close(); 
} 
+0

Показать полный адаптер кода класса – Vickyexpert

+0

Вы проходя весь объект VacancyModel для createFavouriteTable методы? – Vickyexpert

+0

@ Vickyexpert yes – uniq

ответ

0

Места колонна Id в VacancyModel и связать его затем на Delete

int id = vacancyModelList.get(position).getId() 
sqlHelper.deleteFromFavouriteDatabase(id); 
+0

Проблема заключалась в том, что в файле JSON не было идентификатора значения. После добавления идентификатора в файл JSON был использован ваш метод – uniq

0

попытаться изменить ВЕЬЕТЕ к этому:

db.delete(FAVOURITE.TABLE_NAME, FAVOURITE.KEY_ID + "=?", new String[]{rowID});

0

Пожалуйста, измените GetView() путем ниже:

@Override 
public View getView(final int position, View convertView, final ViewGroup parent) { 

ViewHolder holder = null; 

if (convertView == null) { 
    holder = new ViewHolder(); 
    convertView = inflater.inflate(resource, null); 
    holder.tvHeader = (TextView) convertView.findViewById(R.id.tvHeader); 
    holder.tvProfileName = (TextView) convertView.findViewById(R.id.tvProfileName); 
    holder.tvSalary = (TextView) convertView.findViewById(R.id.tvSalary); 
    holder.tvPostCr = (TextView) convertView.findViewById(R.id.tvPostCr); 
    //holder.tvBody = (TextView) convertView.findViewById(R.id.tvBody); 
    holder.cbxFav = (CheckBox) convertView.findViewById(R.id.cbxFav); 

    convertView.setTag(holder); 
} else { 
    holder = (ViewHolder) convertView.getTag(); 
    holder.cbxFav.setOnCheckedChangeListener(null); 
} 


holder.cbxFav.setTag(vacancyModelList.get(position)); 



    holder.tvHeader.setText(vacancyModelList.get(position).getHeader()); 
    holder.tvProfileName.setText(vacancyModelList.get(position).getProfileName()); 
    holder.tvSalary.setText(vacancyModelList.get(position).getSalary()); 
    holder.tvPostCr.setText(vacancyModelList.get(position).getPostCreated()); 
    //holder.tvBody.setText(vacancyModelList.get(position).getBody()); 

    holder.cbxFav.setChecked(isSelected.get(position)); 

    holder.cbxFav.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
     @Override 
     public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 

      if (isChecked) { 
      //inserting the data into Favourite Table in sql 
       isSelected.set(position, true); 
     VacancyModel selectedModel = (VacancyModel) holder.cbxFav.getTag(); 


       sqlHelper.createFavouriteTable(selectedModel); 
       //Toast.makeText(getContext(), "Added to favourite", Toast.LENGTH_SHORT).show(); 

      } else { 
       isSelected.set(position, false); 
       //sqlHelper.deleteFromFavouriteDatabase(position); 
       //Toast.makeText(getContext(), "Deleted from favourite", Toast.LENGTH_SHORT).show(); 

       VacancyModel selectedModel = (VacancyModel) holder.cbxFav.getTag(); 
        sqlHelper.deleteFromFavouriteDatabase(selectedModel.getId()); 

      } 
     } 
    }); 

    return convertView; 
} 
+0

sqlHelper.deleteFromFavouriteDatabase (selectedModel.getId()); «getId» недоступен – uniq

+0

положил туда своего полевого человека, которого я положил getId, вам нужно использовать свой уникальный идентификатор – Vickyexpert

Смежные вопросы