我正在创建一个RecyclerAdapter来显示某一天的天气预报信息。我的RecyclerView包含多天,每一天都可以通过onBindViewHolder进行修改。
每天的布局有3个文本视图。第一个包含作为摘要的字符串。第二个包含一个字符串,该字符串的位置参数为double,代表低温。第三个与第二个相同,但是代表高温。
下面是我的onBindViewHolder方法的代码:
@Override
public void onBindViewHolder(@NonNull DailyForecastAdapter.ViewHolder viewHolder, int i) {
Datum datum = forecast.get(i);
TextView summary = viewHolder.summaryTextView;
TextView tempHigh = viewHolder.tempHighTextView;
TextView tempLow = viewHolder.tempLowTextView;
summary.setText(datum.getSummary());
tempHigh.setText(datum.getTemperatureHigh());
tempLow.setText(datum.getTemperatureLow());
}
Run Code Online (Sandbox Code Playgroud)
由于高温和低温是double,因此我需要相应地格式化字符串,以免我只用double值覆盖字符串。这是高温和低温的字符串资源:
<string name="temperature_high">High of %1$.2f</string>
<string name="temperature_low">Low of %1$.2f</string>
Run Code Online (Sandbox Code Playgroud)
在RecyclerAdapter类之外,我知道如何执行此操作,以下是如何在Fragment中格式化字符串的示例:
String moddedString = String.format(getString(R.string.temperature), temp);
((TextView)activity.findViewById(R.id.temperatureDisplay)).setText(moddedString);
Run Code Online (Sandbox Code Playgroud)
但是,我没有访问getString()RecyclerAdapter内部的函数的权限,因此我无法正确格式化字符串以插入所需的温度,而不会用双精度完全覆盖String。
如何getString()在onBindViewHolder()方法内部使用?
我试图在Eclipse 中生成我的 java 文件的 serialVersionUID,但得到Eclipse 中描述的错误:无法生成串行版本 ID。我已按照该问题中的说明进行操作,但我没有丢失路径文件,但仍然出现相同的错误。此外,我必须使用随机生成的 serialVersionUID(尽管通常只使用 1L 是可以的),因为这是我的项目的要求。
由于我的日食不合作,我正在尝试命令行解决方案。我发现的命令serialver不会生成 serialVersionUID。根据如何生成 SerialVersionUID serialver 应该在文件中生成一个 serialVersionUID:
- 串行命令
JDK 有一个名为“serialver”的内置命令来自动生成 serialVersionUID。在此示例中,您使用“serialver”为 Address 类生成一个 serialVersionUID。
Run Code Online (Sandbox Code Playgroud)E:\workspace\target\classes>serialver Address Address: static final long serialVersionUID = -687991492884005033L;
但是,我在类目录中的一个类上运行了这个命令,终端返回了这个错误:
Class Classname.java not found.
Run Code Online (Sandbox Code Playgroud)
无论我是在终端中输入serialver Classname还是输入,都会出现此错误serialver Classname.java。我还在与文件相同的目录中运行它,但错误仍然存在。
如何serialver在 Linux 命令行中使用,设置 Java 文件的 serialVersionUID?如果serialver不是我应该使用的命令,哪个命令(或一系列命令)是正确的方法?
我想从命令行在我的文件中生成并分配一个 serialVerionUID ,因此如何在 Java 中以编程方式 …
我有一个如下所示的文本文件:
$SomeText.element_[1]="MoreText[3]";\r"
$SomeText.element_[2]="MoreText[6]";\r"
$SomeText.element_[3]="MoreText[2]";\r"
$SomeText.element_[4]="MoreText[1]";\r"
$SomeText.element_[5]="MoreText[5]";\r"
Run Code Online (Sandbox Code Playgroud)
这持续了一千多行。我想做以下事情:
$SomeText.element_[0]="MoreText[3]";\r"
$SomeText.element_[1]="MoreText[6]";\r"
$SomeText.element_[2]="MoreText[2]";\r"
$SomeText.element_[3]="MoreText[1]";\r"
$SomeText.element_[4]="MoreText[5]";\r"
Run Code Online (Sandbox Code Playgroud)
文件中每一行文本的最左边的索引都应该减一,其余文本保持不变。
到目前为止,我已经尝试了以下...但对我来说问题是我不知道如何将它正确地反馈到文件中:
我尝试了双重切割技术:
cat file.txt | cut -d '[' -f2 | cut -d ']' -f1 | xargs -I {} expr {} + 1
Run Code Online (Sandbox Code Playgroud)
这正确地将所有减一的索引输出到命令行。
我尝试将 awk 与 sed 混合使用,但这是由机器挂起造成的:
awk -F'[' '{printf("%d\n", $2-1)}' file.txt | xargs -I {} sed -i 's/\[\d+\]/{}/g' file.txt
Run Code Online (Sandbox Code Playgroud)
如何正确地将文件中的所有数组索引递减一并将递减后的索引正确写入文本文件的正确位置?
若干C ++源材料和堆栈溢出问题讨论了与实现有关的性质char。也就是说,char在C ++中可以将其定义为an unsigned char或a signed char,但是根据ARM Linux FAQ ,此实现完全取决于编译器:
上面的代码实际上是错误的,因为它假定类型“ char”等效于“ signed char”。C标准确实说过,“ char”可以是“ signed char”或“ unsigned char”,这取决于编译器的实现或所遵循的平台。
这为歧义问题和不良做法(包括误以为 8位数字使用的char的符号)都敞开了大门。C的基本原理提供了这种情况的某些原因,但没有解决保持歧义可能性的问题:
指定了三种类型的char:有符号,无格式和无符号。像以前的实践一样,根据实现方式,纯字符可以表示为有符号或无符号。引入了带符号的字符类型,以在那些将无格式字符实现为无符号的系统上提供一个一字节的带符号整数类型。出于对称性原因,允许使用符号关键字作为其他整数类型的类型名称的一部分。
将门关闭甚至产生歧义的可能性似乎是有利的,只留下unsigned char和signed char的类型作为8位单元的两种数据类型。这促使我提出问题...
鉴于存在歧义的可能性,为什么还要保留char数据类型实现的依赖性?
我有一个perl脚本,称为main.pl,在清晰的情况下,当前处于多个分支状态,如下所示:
分支1:
my %hash
my $variable = "a"
my $variable2 = "c"
sub codeIsOtherwiseTheSame()
....
Run Code Online (Sandbox Code Playgroud)
分支2:
my %hash2
my $variable = "b"
sub codeIsOtherwiseTheSame()
....
Run Code Online (Sandbox Code Playgroud)
分公司3
my %hash
my $variable2 = "d"
sub codeIsOtherwiseTheSame()
....
Run Code Online (Sandbox Code Playgroud)
现在,脚本的每个分支都具有相同的代码。唯一的区别是声明的变量的种类及其初始化值是什么。我要做的是将这些不同的变量提取到包装脚本中(对于每个变体),这样就不必更改主脚本了。我这样做是因为有几个用户将使用此脚本,但是根据他们的用例,它们之间只有很小的差异。因此,我希望每种用户都有自己的简化界面。同时,我希望主脚本在被调用后仍能意识到这些变量。以下是我想要的示例:
包装脚本1:
my %hash;
my $variable = "a";
my $variable2 = "c";
system("main.pl");
Run Code Online (Sandbox Code Playgroud)
包装脚本2:
my %hash2;
my $variable = "b";
system("main.pl");
Run Code Online (Sandbox Code Playgroud)
包装脚本3:
my %hash;
my $variable2 = "d";
system("main.pl");
Run Code Online (Sandbox Code Playgroud)
Main.pl
sub codeIsOtherwiseTheSame()
Run Code Online (Sandbox Code Playgroud)
如何提取包装器脚本以获得上面想要的组织和行为?
该perl命令有几个防白痴命令行选项,描述perldoc perlrun如下:
-c causes Perl to check the syntax of the program and then exit without executing it.
-w prints warnings about dubious constructs, such as variable names that are mentioned only once and scalar variables that are used before being set, etc.
-T forces "taint" checks to be turned on so you can test them.
Run Code Online (Sandbox Code Playgroud)
通读这些选项后,我找不到检测未定义函数的选项。例如,我使用了一个名为NFD()导入Unicode::Normalize包的函数。然而,作为一个 perl 新手,我不知道这是否已经在标准 perl 库的范围内。并且perl -c任何其他选项都没有为我发现这个错误,而是一位同事注意到它以某种方式未定义(并且不在标准库中)。因此,我对以下内容感到好奇:
perl命令中是否有选项可以自动检测导入的包中是否存在未定义的函数?
在chsell脚本中,我从perl模块调用一个子例程,并将其结果按以下方式保存到变量中:
set result =`perl -M/some/hard/coded/path/lib.pm=theFunction -e 'theFunction( $A_VARIABLE_ARGUMENT )'`
Run Code Online (Sandbox Code Playgroud)
尽管我明确指定了模块,但我的脚本仍抛出此错误:
-M选项需要的模块名称
如何使用perl的-M选项调用硬编码模块?