我想做的是獲取保存在資料庫中的字串值,如果這些值與復選框的字串值相等,那么就檢查這些復選框。
在我的片段中,我在observe(getViewLifecycleOwner(), d -> {>里面做了以下的作業
String desc = d. damage.getDescription().trim();
Log.d("checkbox Op #1",desc)。
這將回傳類似這樣的結果(取決于一次保存多少個)
D/checkbox Op #1: NSR door NSR quarter NS roof rail OSR door OSR quarter NS sill OS sill NS sliding door OS sliding door
我做了以下作業來獲取復選框的字串值并進行比較
。
for (int i=0; i<=19; i )
{
String sel5 = allCheckBoxes[i].getText().toString().trim()。
Log.d("checkbox Op #2", sel5);
if (allCheckBoxes[i].getText().toString().trim() 。
{
allCheckBoxes[i].setChecked(true)。
Log.d("checkbox Op #3", allCheckBoxes[i].getText().toString() )。
}
}
上面的內容將回傳
D/checkbox Op #2: NSL wing
NSF門
NSR門
NSR四分之一
NS車頂軌道
OSF機翼
OSF門
OSR門
OSR四分之一
OS車頂軌道
引擎蓋
車頂
尾門/尾箱
NS門檻
OS門檻
NS推拉門
OS推拉門
前保險杠
后保險杠
摩托車水箱
問題是:
如果我使用String desc = d.damage.getDescription().trim();從資料庫中獲取1個值,上述方法將正常作業,但在大多數情況下,它將超過1,正如前面解釋的那樣,在這種情況下,代碼不會作業,我不知道我錯過了什么。
完整的代碼
String desc = d.damage.getDescription().trim() 。
Log.d("checkbox Op #1"/span>,desc)。
for(int i=0; i<=19; i )
{
String sel5 = allCheckBoxes[i].getText().toString().trim()。
Log.d("checkbox Op #2", sel5);
if (allCheckBoxes[i].getText().toString().trim() 。
{
allCheckBoxes[i].setChecked(true)。
Log.d("checkbox Op #3", allCheckBoxes[i].getText().toString() )。
}
}
uj5u.com熱心網友回復:
問題是你的復選框中沒有一個文本等于 "NSR door NSR quarter NS roof rail OSR door OSR quarter NS sill OS sill NS sliding door OS sliding door"。
有兩種可能的解決方案。
第一種是我所希望的:不要從資料庫中回傳一個包含所有可能值的單個String,而是以List<String>的形式獲取它。
那么你的代碼將看起來像:
。List<String> descs = d. damage.getDescriptions();
Log.d("checkbox Op #1",desc)。
for(int i=0; i<=19; i )
{
String sel5 = allCheckBoxes[i].getText().toString().trim()。
Log.d("checkbox Op #2", sel5);
if (descs.contains(sel5))
{
allCheckBoxes[i].setChecked(true)。
Log.d("checkbox Op #3", sel5);
}
}
另一個(IMHO低級)解決方案是檢查desc字串是否包含復選框的值:
String desc = d. damage.getDescription().trim()。
Log.d("checkbox Op #1"/span>,desc)。
for(int i=0; i<=19; i )
{
String sel5 = allCheckBoxes[i].getText().toString().trim()。
Log.d("checkbox Op #2", sel5);
if (desc.conatains(sel5))
{
allCheckBoxes[i].setChecked(true)。
Log.d("checkbox Op #3", sel5) 。
}
}
如果其中一個復選框的值是其他值的子串,這就很危險了(例如,"NSF door"和"SF door"就會有問題)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/312362.html
標籤:
