jeudi 13 août 2015

Sqlite update doesn't work

i am using CursorAdapter for listView. inside every listItem I have toggleButton. when i click on it I am doing some stuff and than trying to update data related with this button in sqlite database. when i am click again on this button - it looks like the data from database wasnt updated....

here is my code:

@Override
    public View getView(final int position, View convertView, final ViewGroup parent) {
        View rootView =  super.getView(position, convertView, parent);
        final LinearLayout mLikeLayout = (LinearLayout) rootView.findViewById(R.id.ll_itemNewsTape_btn_like);
        mLikeLayout.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (!isInternetConnected()){
                    Tools.noInternetConnectionDialog(mActivity);
                } else {
                    mAdapter = NewsTapeFragment.getNewsTapeAdapter();
                    mCursor.moveToPosition(position);
                    boolean likeBoolean = mCursor.getInt(NewsTapeFragment.I_LIKE_IT)>0;
                    int newsId = mCursor.getInt(NewsTapeFragment.NEWS_ID);
                    TextView likeText = (TextView)v.findViewById(R.id.textView_itemNewsTape_counter_likes);
                    ToggleButton likeBtn = (ToggleButton)v.findViewById(R.id.imageView_itemNewsTape_like);
                    onLikeCounterIsClicked(likeText, likeBtn, likeBoolean, newsId);
                }
            }
        });
 return rootView;
    }

private void onLikeCounterIsClicked(TextView likeText, ToggleButton likeBtn, boolean likeBoolean, int newsId){
        if (likeBoolean){
            setLikeMinusOne(likeText, likeBtn, newsId, counter);
        } else {
            setLikePlusOne(likeText, likeBtn, newsId, counter);
        }
    }

private void setLikeMinusOne(TextView likeText, ToggleButton likeBtn, int newsId, int counter){
        likeBtn.setChecked(false);
        if (counter == 1){
            likeText.setText(mActivity.getString(R.string.textView_newsTape_iLikeIt));
        } else {
            likeText.setText(String.valueOf(counter - 1));
        }
        if (mDb == null){
            prepareDb();
        }
        String selection = J4D_DB_Contract.NewsTapeEntry.NEWS_ID + " = " + newsId;
        ContentValues values = new ContentValues();
        values.put(J4D_DB_Contract.NewsTapeEntry.I_LIKE_IT, false);
        mDb.update(mTableName, values, selection, null);
    }

 private void prepareDb(){
        J4D_DB_Helper db_helper = new J4D_DB_Helper(mActivity);
        mDb = db_helper.getWritableDatabase();
        mTableName = J4D_DB_Contract.NewsTapeEntry.TABLE_NAME;
    }

Please, any ideas!

Aucun commentaire:

Enregistrer un commentaire