我试图在数字选择器中添加一个数据列表。我使用的库是:https://github.com/ShawnLin013/NumberPicker作为数字选择器。
在我的应用程序中是这样的:

正如你所看到的,它的两边都是用逗号隔开的,我怎么能消除它呢?我想这就是问题所在。
我从消防队的数据库里得到信息。
我的代码:
IList = new ArrayList<>();
DatabaseReference reference = FirebaseDatabase.getInstance().getReference("Information").child( uploads.getIdPost() )
.child("CBS1");
reference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
IList.clear();
for (DataSnapshot snapshot : dataSnapshot.getChildren()){
IList.add(snapshot.getKey());
String[] data = {String.valueOf( IList )};
numberPicker.setMinValue(data.length);
numberPicker.setMaxValue(data.length);
numberPicker.setDisplayedValues(data);
numberPicker.setValue(data.length);
numberPicker.setWrapSelectorWheel(false);
}
}发布于 2019-03-09 04:43:04
这条线
String[] data = {String.valueOf( IList )};String.valueOf( IList )将返回值为[CB, CC]的字符串。这就是为什么您在NumberPicker UI上看到它的原因。
解决方案:将字符串数组转换为字符串数组。
IList.add(snapshot.getKey());
// Convert string arraylist to string array.
String[] data = new String[list.size()];
data = list.toArray(data);
// Set minValue is 1 instead of data.length
numberPicker.setMinValue(1);
numberPicker.setMaxValue(data.length);
numberPicker.setDisplayedValues(data);
numberPicker.setValue(data.length);
numberPicker.setWrapSelectorWheel(false);更新:,我想这就是你的意思
reference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
IList.clear();
for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
IList.add(snapshot.getKey());
}
// Convert string arraylist to string array.
String[] data = new String[IList.size()];
data = IList.toArray(data);
numberPicker.setMinValue(0);
numberPicker.setMaxValue(data.length - 1);
numberPicker.setDisplayedValues(data);
numberPicker.setValue(0);
numberPicker.setWrapSelectorWheel(false);
}
}发布于 2019-03-09 04:42:44
这是因为以下代码:
String[] data = {String.valueOf( IList )};其中,String.valueOf返回IList对象的字符串表示形式。
您需要使用类似于toArray的东西。
https://stackoverflow.com/questions/55072069
复制相似问题