【发布时间】:2019-03-16 20:02:05
【问题描述】:
上下文
我正在创建一个 RecyclerAdapter 来显示某一天的预测信息。我的 RecyclerView 包含多天,每一天都使用 onBindViewHolder 进行修改。
每天的布局有 3 个文本视图。第一个包含一个作为摘要的字符串。第二个包含一个带有双精度的字符串作为表示低温的位置参数。第三个与第二个相同,但代表高温。
下面是我的 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());
}
问题
由于高温和低温是doubles,我需要相应地格式化字符串,以免我只用一个double值覆盖字符串。以下是高温和低温的字符串资源:
<string name="temperature_high">High of %1$.2f</string>
<string name="temperature_low">Low of %1$.2f</string>
在 RecyclerAdapter 类之外我知道如何做到这一点,下面是我如何在 Fragment 中格式化字符串的示例:
String moddedString = String.format(getString(R.string.temperature), temp);
((TextView)activity.findViewById(R.id.temperatureDisplay)).setText(moddedString);
但是,我无法访问 RecyclerAdapter 中的 getString() 函数,因此我无法适当地格式化字符串以插入我需要的温度,而无需用双精度完全覆盖字符串。
问题
如何在onBindViewHolder() 方法中使用getString()?
【问题讨论】:
-
旁注。 Context 类中有getString(int, Object...) 方法。所以你可以使用
getString(R.string.temperature, temp)而不是String.format(getString(R.string.temperature), temp)
标签: android android-studio android-recyclerview