小编sky*_*eek的帖子

如何在Room Dao函数中更新实体的TypeConverted列

我有一个@Entity,它包含一个变量(自定义对象列表)以及该表的其他字段.我能够从这个实体插入,获取和删除.

但我在更新实体时面临一个问题:

我想更新该特定字段,该字段包含表中的自定义对象列表,但在编译时会抛出错误:

error: Query method parameters should either be a type that can be converted into a
database column or a List / Array that contains such type. You can consider adding a Type Adapter for this.
Run Code Online (Sandbox Code Playgroud)

我可以更新完整的行对象,但问题在于更新此单个字段.我在我的@Database类上使用TypeConverters但是我尝试在Dao和更新函数本身上使用它们但是它报告了相同的错误.

有人可以帮我更新行中的这个特定字段,我不想提供这个实体的完整对象来实现这一点.

我的实体是:

@Entity data class TableName(
    @PrimaryKey
    var id: String = "",
    @SerializedName("varOne")
    @Expose
    var varOne: List<CustomObjects>? = null)
Run Code Online (Sandbox Code Playgroud)

更新方法是这样的:

@TypeConverters(MyTypeConverters.VarOneListTypeConverters::class)
@Query("Update TableName SET varOne = :varOneList")
abstract fun updateTableName(varOneList: List<CustomObjects>)
Run Code Online (Sandbox Code Playgroud)

android typeconverter kotlin android-database android-room

6
推荐指数
1
解决办法
808
查看次数

listview没有使用viewpager选项卡在片段中刷新

我遇到了listview用于jipwharton的Android-ViewPagerIndicator中给出的viewpager样式标签中的片段的问题... github上的例子.

我使用相同的lib为三个选项卡,每个选项卡都有一个列表视图,相同的arraylist设置为适配器.

我使用3这种片段都工作正常,但我希望我的列表在所有其他片段中更新,当我在其中任何一个中进行更改时,它不反映更改.我想如果我在三个选项卡中的任何一个列表中检查了一个复选框(我正在更新db和我的arraylist中的值)其他两个listview里面的各个片段应该反映更改,请帮助我.请帮助我,任何帮助将不胜感激

class RingFragment extends Fragment
{
 public static RingFragment newInstance(Context c, ArrayList<Ringtones> ringList) 
 {
  RingFragment fragment = new RingFragment();
  cCntxt = c;
  return fragment;
 }
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle        
savedInstanceState)
 {
  rngAdapter = new RingAdapter(cCntxt, ringFragList);
  lstRingtones = new ListView(cCntxt);
  lstRingtones.setLayoutParams(new    LayoutParams(LayoutParams.FILL_PARENT, 
  LayoutParams.FILL_PARENT));
  lstRingtones.setAdapter(rngAdapter);
  LinearLayout layout = new LinearLayout(getActivity());
  layout.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,  
  LayoutParams.FILL_PARENT));
  layout.setGravity(Gravity.CENTER);
  layout.addView(lstRingtones);
  return layout;
 }
 public class RingAdapter extends BaseAdapter
 {
    ArrayList<Ringtones> arlstRingAdpter;
    Context adptrContext;
    public boolean noRing = false;
    public …
Run Code Online (Sandbox Code Playgroud)

tabs android listview fragment android-viewpager

5
推荐指数
1
解决办法
3364
查看次数