我無法通過單擊添加到收藏夾來設定 isfavorites 值。 Android Studio 顯示 ringTonesDao 的空指標例外。我不知道如何解決這個錯誤。另一方面,因為 ringTonesDao 是一個介面,如果我將它的值設定為 new RingTonesDao,我必須設定它的所有功能。
這是鈴聲配接器
//Imports and Package name
public class RingTonesAdapter extends
RecyclerView.Adapter<RingTonesAdapter.ringTonesViewHolder> {
private List<RingTones> ringTonesList;
RingTonesDao ringTonesDao; // <--This is null in logcat
public RingTonesAdapter(List<RingTones> ringTonesList) {
this.ringTonesList = ringTonesList;
}
@NonNull
@Override
public ringTonesViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.actv_main_list,
parent, false);
return new ringTonesViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull ringTonesViewHolder holder, int position) {
//Set RingTone name to TextView
//Set RingTone Btn
//Set Alarm Btn
//Set Notification Btn
//Add To Favorites Btn
if (ringTonesList.get(position).isFavorite()) {
holder.btn_addToFavorites.setImageResource(R.drawable.ic_favorites);
} else {
holder.btn_addToFavorites.setImageResource(R.drawable.ic_addtofavorites);
}
holder.btn_addToFavorites.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
Long id = ringTonesList.get(position).getId();
ringTonesDao.update(true,id);
}catch (NullPointerException e){
Toast.makeText(v.getContext(),"Null Pointer
Exception",Toast.LENGTH_LONG).show();
}
}
});
//Set Play Btn
//ringTonesViewHolder and count items
這是 RingTonesDao
//import and package
@Dao
public interface RingTonesDao {
@Insert
Long add(RingTones ringTones);
@Delete
int delete(RingTones ringTones);
@Query("SELECT * FROM tbl_ringtones")
List<RingTones> getRingTones();
@Query("SELECT * FROM tbl_ringtones WHERE favorites>0 ")
List<RingTones> favorites();
@Query("DELETE FROM tbl_ringtones")
void deleteAll();
@Query("UPDATE tbl_ringtones SET favorites=:favorites WHERE id=:id")
int update (Boolean favorites ,Long id);
}
uj5u.com熱心網友回復:
你需要做這樣的事情
DatabaseClient.getInstance(v.getContext()).getAppDatabase()
.RingTonesDao()
.update(true,id);
閱讀更多如何使用 Rom 資料庫:從這個例子
Java 中的 Boolean 和 boolean 之間也存在差異,
在您的情況下, 請嘗試在更新函式中使用 `boolean` 代替 `Boolean`。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/311408.html
標籤:数据库 sqlite android-room 收藏夹
