我的应用程序
使用ViewPager
和Frahtml" target="_blank">gements
。每个片段
都显示一个ListView
,其中包含CheckBox
、一个ProgressBar
和一个TextView
。如果6个CheckBox
中有3个被检查,则ProgressBar
和TextView
应更新为3%。
问题
文本视图和进度条无法正确显示更新。我记录了计算的进度值以及 tv.
有两个问题:
1.)进度值与< code>tv.getText()和< code>pb.getProgress()的值不相等。< code>tv.getText()和< code>pb.getProgress()返回的值总是高或低3%。< br >(是的,我传递给setProgress()和setText()的值是正确的)
11-30 14:44:57.099 14230-14230/com.example..myapplication
D/CheckBox: setProgressBar()
progress should be = 3%
progressBar is = 0%
progressText is = 0%
11-30 14:45:02.275 14230-14230/com.example..myapplication
D/CheckBox: setProgressBar()
progress should be = 7%
progressBar is = 3%
progressText is = 3%
2.) 文本视图
和进度条
视图始终显示 0%。
我花了几个小时试图解决这个问题,但我甚至无法在StackOverflow上找到解决方案。出了什么问题?
片段类
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable
ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment, container, false);
progressBar = view.findViewById(R.id.progressBar);
progressText = view.findViewById(R.id.progressText);
lv = view.findViewById(R.id.list_view_nahrungsmittel);
dateTV = view.findViewById(R.id.changeDate);
leftBTN = view.findViewById(R.id.changeDateBTNLeft);
rightBTN = view.findViewById(R.id.changeDateBTNRight);
backToTodayBTN = view.findViewById(R.id.backToTodayBTN);
mDB = new DBHelper(getContext()); //hier oder main?
items = MainActivity.getList();
setBTN();
setBackToTodayButton();
setNumCheckedCB();
setDateTV();
setProgressBarFirstTime();
setListAdapter();
setListViewListener();
setButtons();
return view;
}
public void setProgressBar(int i) {
Log.d("CheckBox", "setProgressBar()");
progress = (int)(((float)i * 100f) / (float) MainActivity.getNumCB());
Log.d("CheckBox", "progress should be = " + progress + "%" );
Log.d("CheckBox", "progressBar is = " + progressBar.getProgress() + "%" );
Log.d("CheckBox", "progressText is = " + progressText.getText() );
progressBar.setProgress(progress);
progressText.setText(progress + "%");
}
列表视图
为列表视图中的每个复选框设置侦听器,这将调用 set 进程栏() 方法。
//Click on CB
final DataHolder finalHolder1 = holder;
holder.cb1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(buttonView.isPressed()) {
buttonView.setChecked(isChecked);
//Update Progress
int i = 0;
boolean[] stateCheckBox = mDB.getCheckBoxState(date, item.getTitle());
if(isChecked){
if(finalHolder1.cb1.getVisibility() == View.VISIBLE && finalHolder1.cb2.getVisibility() == View.VISIBLE && finalHolder1.cb3.getVisibility() == View.VISIBLE ){
if(stateCheckBox[1] == false && stateCheckBox[2] ==false) { i = 3; }
else if (stateCheckBox[1] == false && stateCheckBox[2] ==true) { i = 2; }
else if (stateCheckBox[1] == true && stateCheckBox[2] ==true) { i = 1; }
}
else if (finalHolder1.cb1.getVisibility() == View.VISIBLE && finalHolder1.cb2.getVisibility() == View.VISIBLE) {
if (stateCheckBox[1] == false) { i = 2; }
else if (stateCheckBox[1] == true) { i = 1; }
}
else { i = 1; }
}
else { i = 1; }
updateNumCheckedCheckBoxes(date, isChecked, i);
//Update CB state
//Case1: Three CB in row, Left gets checked -> set all other right CB´s checked
if (isChecked) {
finalHolder1.cb2.setChecked(isChecked);
finalHolder1.cb3.setChecked(isChecked);
mDB.updateCheckBoxState(date, item.getTitle(), isChecked, isChecked, isChecked);
} else {
if (finalHolder1.cb2.getVisibility() == View.GONE) {
//Case2: Only one Cb in row, uncheck
mDB.updateCheckBoxState(date, item.getTitle(), isChecked, isChecked, isChecked);
} else if (finalHolder1.cb3.getVisibility() == View.GONE) {
//Case3: Two Cb in row, left gets unchecked
mDB.updateCheckBoxState(date, item.getTitle(), isChecked, !isChecked, !isChecked);
} else {
//Case4: Three CB, left gets unchecked
mDB.updateCheckBoxState(date, item.getTitle(), isChecked, !isChecked, !isChecked);
}
}
}
}
});
holder.cb2.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(buttonView.isPressed()) {
buttonView.setChecked(isChecked);
//Update Progress
int i = 0;
boolean[] stateCheckBox = mDB.getCheckBoxState(date, item.getTitle());
if(isChecked){
if(finalHolder1.cb1.getVisibility() == View.VISIBLE && finalHolder1.cb2.getVisibility() == View.VISIBLE && finalHolder1.cb3.getVisibility() == View.VISIBLE ){
if(stateCheckBox[2] ==false) { i = 2;}
else if (stateCheckBox[2] ==true) { i = 1;}
}
else if (finalHolder1.cb1.getVisibility() == View.VISIBLE && finalHolder1.cb2.getVisibility() == View.VISIBLE) { i = 1; }
}
else {
if(finalHolder1.cb1.getVisibility() == View.VISIBLE && finalHolder1.cb2.getVisibility() == View.VISIBLE && finalHolder1.cb3.getVisibility() == View.VISIBLE ){
if(stateCheckBox[0] ==false) { i = 1; }
else if (stateCheckBox[2] ==true) { i = 2; }
}
else if (finalHolder1.cb1.getVisibility() == View.VISIBLE && finalHolder1.cb2.getVisibility() == View.VISIBLE) {
if(stateCheckBox[0] == true) { i = 2; }
else if (stateCheckBox[0] == false) { i = 1;}
}
}
updateNumCheckedCheckBoxes(date, isChecked, i);
//Update CB state
//Case5: Second from the left CB gets checked -> set right CB checked
if (isChecked) {
finalHolder1.cb3.setChecked(isChecked);
mDB.updateCheckBoxState(date, item.getTitle(), !isChecked, isChecked, isChecked);
}
//Case6: Second from the left CB gets unchecked -> set left CB unchecked
else {
finalHolder1.cb1.setChecked(isChecked);
mDB.updateCheckBoxState(date, item.getTitle(), isChecked, isChecked, !isChecked);
}
}
}
});
holder.cb3.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(buttonView.isPressed()) {
buttonView.setChecked(isChecked);
//Update Progress
int i = 0;
boolean[] stateCheckBox = mDB.getCheckBoxState(date, item.getTitle());
if(isChecked){ i = 1; }
else {
if(finalHolder1.cb1.getVisibility() == View.VISIBLE && finalHolder1.cb2.getVisibility() == View.VISIBLE && finalHolder1.cb3.getVisibility() == View.VISIBLE ){
if(stateCheckBox[0] == false && stateCheckBox[1] == false) { i = 1; }
else if (stateCheckBox[0] == false && stateCheckBox[1] ==true) { i = 2; }
else if (stateCheckBox[0] == true && stateCheckBox[1] == true) { i = 3; }
}
}
updateNumCheckedCheckBoxes(date, isChecked, i);
//Update CB state
//Case5: Right CB gets unchecked -> set all other left CB´s unchecked
if (!isChecked) {
finalHolder1.cb2.setChecked(isChecked);
finalHolder1.cb1.setChecked(isChecked);
mDB.updateCheckBoxState(date, item.getTitle(), isChecked, isChecked, isChecked);
}
else {
//Case 6: 3CBs, only right CB gets checked
mDB.updateCheckBoxState(date, item.getTitle(), !isChecked, !isChecked, isChecked);
}
}
}
});
//Click on Image Button
holder.imageButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v){
Intent intent = new Intent(context , Statistic2Activity.class);
context.startActivity(intent);
}
});
}
private void updateNumCheckedCheckBoxes (String date, boolean isChecked, int i){
mDB.updateNumCheckedCheckBoxes(date, isChecked, i);
updateProgressBar(date);
}
将其添加到setProgressBar()方法中修复了我的问题:
progressBar = view.findViewById(R.id.progressBar);
progressText = view.findViewById(R.id.progressText);
问题内容: 我正在尝试使用MongoDB的Java驱动程序在同一操作中对记录进行两次更新($ set和$ push)。我正在使用类似于以下代码: 当我通过BasicDBList将$ set和$ push合并到同一更新中时,我得到一个IllegalArgumentException:“存储在db中的字段不能以’$’开头(错误键:’$ push’)”。 如果我进行两个单独的更新,则pushUpdate
上一篇文章出现了个明显的知识点错误,不过感谢有个网友的提出,及时进行了修改。也希望各位多多包涵。 注:(2019年09月01日15:28:00) 在修改文章的时候,发现自己两年前写的像屎一样, 忍不住还在群里吐槽一番。 目录
JavaScript的默认对象表示方式{}可以视为其他语言中的Map或Dictionary的数据结构,即一组键值对。 但是JavaScript的对象有个小问题,就是键必须是字符串。但实际上Number或者其他数据类型作为键也是非常合理的。 为了解决这个问题,最新的ES6规范引入了新的数据类型Map。要测试你的浏览器是否支持ES6规范,请执行以下代码,如果浏览器报ReferenceError错误,那
问题内容: 有没有一种方法可以通过它的Java驱动程序修改MongoDb中某个键的值。我尝试了以下方法: 但是这两个功能完全用更新的文档替换了查询的文档。在mongo shell中使用$ set的情况下,仅更新特定键值之一的方法是什么(除了制作一个完全复制了所有字段并且更新了一个字段的全新Document)。 问题答案: 尝试这样的事情: 还要看这个例子。
使用有什么区别吗: 从bash手册页上可以看出,它们是相同的,唯一的区别是,从用户角度来看,第二种格式更明确。
我有下面一行代码: 但是,编译器会发出警告: scala.collection中任何类型模式的非变量类型参数。Set[Any]未选中,因为它通过擦除[warn]消除 很公平。 所以我把我的台词改成这样: 现在我得到一个错误: 找到[错误]:scala.collection.Set[_] [错误] 必需:scala.collection.Set[Any] 这两者有什么区别? 然后我将代码更改为以下内