我試圖在我的應用程序中創建類似喜歡的東西
我已經與可以設置爲收藏的餐廳進行了活動,我製作了用於製作餐廳最喜愛的圖像按鈕並且它正在工作,導致我有第二個活動,其中列表正在從數據庫獲取信息,一切正常。標題也匹配,所以也應該匹配城市,所以數據庫也應該匹配。
我在更改OnClickListener時遇到問題,我想使用數據庫中的信息來檢查名爲「database_name」的字符串是否與數據庫中的任何字符串匹配。
有代碼吧:設置OnClickListener不工作
mDbHelper = new FeedReaderDbHelper(getApplicationContext());
final SQLiteDatabase db = mDbHelper.getWritableDatabase();
String[] selection = {FeedReaderContract.FeedEntry.COLUMN_NAME_DATABASE};
favoriteButton = (ImageButton) findViewById(R.id.favoriteRestaurant);
Cursor cursor = db.query(FeedReaderContract.FeedEntry.TABLE_NAME, selection,
null, null, null, null, null);
if(cursor.getCount() != 0) {
cursor.moveToFirst();
do {
if(cursor.getString(0).toLowerCase() == database_name.toLowerCase()){
favoriteButton.setBackground(getResources().getDrawable(R.drawable.favoritet));
isFavorite = 1;
}
} while (cursor.moveToNext());
}
它正在改變這個喜愛的按鈕來填補心臟的背景下,至少它應該這樣做。默認情況下它沒有被填充。
然後我改變onClickListener,它的代碼如下所示:
if(isFavorite == 0) {
favoriteButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
isntFavorite();
}
});
} else {
favoriteButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
isFavorite();
}
});
}
isFavorite是這樣的:
private void isFavorite() {
favoriteButton.setBackground(getResources().getDrawable(R.drawable.favoriteu));
String selection = FeedReaderContract.FeedEntry.COLUMN_NAME_DATABASE + " LIKE ?";
mDbHelper = new FeedReaderDbHelper(getApplicationContext());
SQLiteDatabase db = mDbHelper.getWritableDatabase();
String[] selectionArgs = new String[] { database_name };
db.delete(FeedReaderContract.FeedEntry.TABLE_NAME, selection, selectionArgs);
favoriteButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
isntFavorite();
}
});
}
和代碼isntFavorite看起來是這樣的:
private void isntFavorite() {
favoriteButton.setBackground(getResources().getDrawable(R.drawable.favoritet));
mDbHelper = new FeedReaderDbHelper(getApplicationContext());
SQLiteDatabase db = mDbHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(FeedReaderContract.FeedEntry.COLUMN_NAME_TITLE, restaurantName);
values.put(FeedReaderContract.FeedEntry.COLUMN_NAME_ADRESS, restaurantAdress);
values.put(FeedReaderContract.FeedEntry.COLUMN_NAME_CITY, restaurantCity);
values.put(FeedReaderContract.FeedEntry.COLUMN_NAME_DATABASE, database_name);
long newRowId;
newRowId = db.insert(FeedReaderContract.FeedEntry.TABLE_NAME,
null, values);
favoriteButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
isFavorite();
}
});
}
問題在於它總是將ClickListener更改爲isntFavorite,並且它不會將圖像背景更改爲fille d心臟,即使數據庫中有匹配的數據。我試圖將匹配標題從數據庫更改爲活動標題,並且我確定它們匹配,因爲列表標題中包含與我試圖匹配它們的活動相同的字符串。
告訴我,如果它的作品給你。 –
但是這個活動是從列表開始的,它從前面的活動中獲取關於餐館的數據,所以它不能使用保存的狀態,它沒有檢查從previous acitvity中取得的database_name是否與SQLite中的任何database_name匹配數據庫 – LisSkis
正如我所見,例如,調用isFavorite(),直接將一個新的OnClickListener更改爲isntFavorite(),然後再讓isFavorite獲取第一個值,然後再發布它,還有另一種方法可以更改favoriteButton Listener? –