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