语境
我正在创建一个RecyclerAdapter来显示某一天的天气预报信息。我的RecyclerView包含多天,每一天都可以通过onBindViewHolder进行修改。
每天的布局有3个文本 View 。第一个包含一个作为摘要的字符串。第二个包含一个字符串,该字符串的位置参数为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());
}
问题
由于高温和低温是和的两倍,因此我需要相应地格式化字符串,以免我仅用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()
函数,因此我无法正确格式化字符串以插入所需的温度,而不会用 double 完全覆盖String。问题
如何在
getString()
方法中使用onBindViewHolder()
? 最佳答案
每个ViewHolder
实例都有一个itemView
字段,它是View
的一个实例。每个View
实例都有一个getContext()
方法;您可以使用它来访问资源。
String text = viewHolder.itemView.getContext().getString(R.string.mystring);
关于android - 如何在回收者 View 的onBindViewHolder()方法内调用getString()?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52765121/