我有一个变量,它获取数据库实例(ROOM)并执行选择返回对象CidVo。
private AppDataBase appDataBase;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_atendimento_tab);
appDataBase = AppDataBase.getInstance(this);
}
作为异步任务的返回,我进行此查询。我需要与异步任务返回的内容相对应的CidVo,CidVo记录在数据库中,是的,在该库中有它们的对应关系。
问题出在FOR循环的第二次迭代中。
为什么会发生?
For循环:
@Override
public void retornoAsyncTaskResultPredict(AsyncTaskResult<Retorno> asyncTaskResult) {
if (asyncTaskResult.getExceptionResult() == null) {
RetornoPredicaoCid predicaoCidVo = (RetornoPredicaoCid) asyncTaskResult.getResult();
if (predicaoCidVo.getRetorno() != null) {
List<PredicaoCidVo> predCid = predicaoCidVo.getRetorno();
List<CidVo> predictedText = new ArrayList<>();
List<CidVo> predictedText1 = new ArrayList<>();
for (int i = 0;i<predCid.size();i++) {
//appDataBase = AppDataBase.getInstance(this);
CidVo cidVo = appDataBase.getCidDao().getCidVo(predCid.get(i).getTextPredicted());
CidVo cidVo1 = appDataBase.getCid(this, predCid.get(i).getTextPredicted());
predictedText1.add(cidVo1);
predictedText.add(cidVo);
}
}
}
AppDataBase:
@Database(entities = {CidVo.class}, version = 8, exportSchema = false)
public abstract class AppDataBase extends RoomDatabase {
public abstract CidDao getCidDao();
private static AppDataBase appDataBase;
public static AppDataBase getInstance(Context context) {
if (null == appDataBase) {
appDataBase = buildDataBaseInstance(context);
}
return appDataBase;
}
private static AppDataBase buildDataBaseInstance(Context context) {
return Room.databaseBuilder(context,
AppDataBase.class,
"AutoCompleteVo")
.fallbackToDestructiveMigration()
.allowMainThreadQueries().build();
}
//CID predicted
public CidVo getCid(Context context, String idCidVo) {
if (appDataBase == null) {
appDataBase = AppDataBase.getInstance(context);
}
return appDataBase.getCidDao().getCidVo("%" + idCidVo + "%");
}
}
DAO:
@Dao
public interface CidDao {
//CID
@Insert(onConflict = OnConflictStrategy.REPLACE)
void insertAllCID(List<CidVo> cidVos);
@Query("Select * from CidVo WHERE idCid = :idCid")
CidVo getCidVo(String idCid);
}
循环的第一次迭代正常返回,但是从第二次迭代开始,返回null,即选择。
编辑:
编辑:
如果我选择变量(appdatabase
(ALT + F8)并手动放置代码路径,则查询会将数据返回给我。
答案 0 :(得分:0)
在第二次迭代中,项目开始或结束时都带有空格,从而引起了问题。用简单的.trim();
predCid.get(i).getTextPredicted ().trim()