语境

我正在创建一个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/

10-13 03:40