为什么这样做:
String[] array = {"a", "b", "c"};
List<String> list = Arrays.asList(array);
Run Code Online (Sandbox Code Playgroud)
但这不是:
List<String> list = Arrays.asList({"a","b","c"});
Run Code Online (Sandbox Code Playgroud) 我试图在Android中实现一些文本布局,就像float="right"在HTML中一样.我在屏幕的某个区域有两个文本项.我希望其中一个在TextView中左对齐,其中一个是右对齐的,就像这样(其中|两端代表封闭容器): -
| First text item label |
Run Code Online (Sandbox Code Playgroud)
到目前为止,这听起来很容易:我可以用a中的两个TextViews 来做RelativeLayout,右边的一个设置为layout_alignParentRight="true"或layout_gravity="right".但也有左手文字太长而无法容纳剩余空间的情况.有了RelativeLayout它会与右手文本重叠,但我想在这种情况下分成两行: -
| This text is way too long |
| label |
Run Code Online (Sandbox Code Playgroud)
同样,如果左侧文本流向多行,我希望右手文本尽可能适合同一行: -
| This text doesn't fit on |
| one line label |
Run Code Online (Sandbox Code Playgroud)
因为ViewAndroid中的s总是矩形的,所以TextView即使我写了一个自定义,似乎也不可能让这个最后一个例子用两个s 工作Layout.我查看使用a Spannable让我把所有文本放在一个TextView,但是再次,AlignmentSpan是一个ParagraphStyle,所以看起来它不能将标签放在与左手文本相同的那条线上.是否有其他类型的文本跨度可用于实现此目的,甚至是完全不同的方法?
目前,看起来我要将文本放在HTML中并使用WebView(不是很好,因为视图要放在列表项中),或者编写一个类似自定义TextView的小部件.
我正在自学Java; 因此,除了学习/测试之外,下面的代码没有任何功能.
本质上,我正在尝试在foreach循环中修改整数数组的元素(即,将它们减半).
我应该注意,我没有重新排序,添加或删除元素; 只是改变他们的价值观
这是我的代码:
Logger.describe("Now copying half of that array in to a new array, and halving each element");
Integer[] copyArray = new Integer[DEFAULT_SAMPLE_SIZE / 2];
System.arraycopy(intArray, 0, copyArray, 0, DEFAULT_SAMPLE_SIZE / 2);
for (Integer x : copyArray) x /= 2;
Logger.output(Arrays.deepToString(copyArray));
Run Code Online (Sandbox Code Playgroud)
但是,原始数组(intArray)是这样的:
[47, 31, 71, 76, 78, 94, 66, 47, 73, 21]
Run Code Online (Sandbox Code Playgroud)
而copyArray的输出是:
[47, 31, 71, 76, 78]
Run Code Online (Sandbox Code Playgroud)
因此尽管数组的大小减半,但元素(整数)的值也没有减半.那么我做错了什么?
谢谢
我在colors.xml中有一个颜色列表,它们都有tColor1,tColor2,tColor3等格式的名称,我希望使用循环整数作为名称的一部分在for-to-do循环中检索它们.所以我有
for (int i = 0; i < numTrails; i++) {
newColors[i] = R.color.tColor + i;
}
Run Code Online (Sandbox Code Playgroud)
现在我明白我不能像那样使用R类,但是我可以使用其他什么方法来获取颜色?
这是我关于这个主题的第二篇文章.我已经找到了关于这个主题的几十个帖子,而不是一个有效的解决方案.位置监听器将为您提供纬度,例如3.734567E7.我的目标是将该纬度的精确度降低到四位小数.我不在乎我是截断还是围绕它.以下代码......
Double d = Double.parseDouble("3.734567E7");
NumberFormat fmtr = new DecimalFormat("###.####");
String f = fmtr.format(d);
Log.w(getClass().getName(), "result using DecimalFormat = " + f );
d = (double) Math.round(d * 10000.0) / 10000.0;
Log.w(getClass().getName(), "result using math round = " + d );
f = d.toString();
Log.w(getClass().getName(), "result string using math round = " + f );
Run Code Online (Sandbox Code Playgroud)
产生三条线:37345670 3.734567E7 3.734567E7
这个处理都没有对数字产生任何影响.
当我不得不在我的Windows手机应用程序中使用C#执行此操作时,我执行了以下操作...
myExecution.latitude = Math.Round(newLatitude,4); 我花了不到一分钟的时间.我有一个多星期的时间试图弄清楚如何在java中做同样的事情.Java math.round,oddley够了,根据我的理解,没有办法指定你希望舍入多少小数位以使它完全没用.
我意识到科学记数法只应该是一种显示价值的方式,而与内部存储金额的方式没有任何关系.这使得这个问题更加令人困惑.
任何人都可以修改上面的代码,使其四舍五入到小数点吗?
(但你不能改变第一行代码.它必须用科学记数法指定.如果你用十进制表示法指定它,它的工作非常好.谢谢,加里
我需要将结果集转换为地图地图.我没有使用地图列表的原因是因为我不想遍历整个List来获取特定的行.
我现在面临的问题是,如果索引大于16,则不再对HashMap的条目进行排序.
现在我尝试了以下一个简单的测试:
public static void main(String[] args) {
Map<Integer, String> map = new HashMap<Integer, String>();
//creating 20 rows from 1 to 20
for (int i = 1; i <= 20; i++){
map.put(i, "ROW "+i);
}
//returning all the rows the map contains. Look at position 16.
for(int key : map.keySet()){
System.out.println(key);
}
}
Run Code Online (Sandbox Code Playgroud)
输出如下(查看位置16到20.它们完全无序):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 17 16 19 18 20
我真的很感激,如果有人能解释为什么会这样.
顺便说一下:
我不能使用这样的东西:
for (int …Run Code Online (Sandbox Code Playgroud) 在C++中,我被告知这Foo** foo;是一个指向指针和数组数组的指针?
有人会详细说明为什么它是一个数组数组或如何解释为这样?
我看过一些应用程序使用这种外观,我认为它看起来很棒所以我希望我的应用程序看起来也像这样.
我已经尝试制作一个ListView并使用"simple_list_item_1",但这只是一个带有白色文本的纯黑色背景.
此外,我的应用程序可以看起来像仍然可用于Android 2.1及以上?
java ×5
android ×4
arrays ×2
collections ×2
list ×2
android-ui ×1
autoboxing ×1
c++ ×1
colors ×1
foreach ×1
hashmap ×1
map ×1
pointers ×1
text ×1
textview ×1