特定の日の天気予報情報を表示するRecyclerAdapterを作成しています。私のRecyclerViewには複数の日が含まれており、それぞれがonBindViewHolderで変更されています。
毎日のレイアウトには3つのテキストビューがあります。最初のものには、要約である文字列が含まれています。 2つ目は、低温を表す位置引数としてdoubleを含む文字列を含みます。 3番目は2番目と同じですが、高温を表します。
以下は私の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クラスの外では、これを行う方法を知っています以下は、フラグメント内の文字列をフォーマットする方法の例です。
_ String moddedString = String.format(getString(R.string.temperature), temp);
((TextView)activity.findViewById(R.id.temperatureDisplay)).setText(moddedString);
_
ただし、RecyclerAdapter内のgetString()
関数にアクセスできないので、文字列をdoubleで完全にオーバーライドせずに、必要な温度を挿入するために文字列を適切にフォーマットすることはできません。 。
getString()
メソッド内でonBindViewHolder()
を使用するにはどうすればよいですか?
OnBindViewHolder()メソッド内でgetString()を使用するにはどうすればよいですか?
すべてのViewHolder
インスタンスにはitemView
フィールドがあります。これはView
のインスタンスです。すべてのView
インスタンスにはgetContext()
メソッドがあります。これを使用してリソースにアクセスできます。
String text = viewHolder.itemView.getContext().getString(R.string.mystring);
コンテキストを使用して文字列リソースを取得できます。
context.getString(R.string.temperature)
RecyclerViewAdapterクラスのコンストラクターを使用して、Contextのローカルコピーを保存できます。
public class YourRecyclerViewAdapter extends RecyclerView.Adapter<YourRecyclerViewAdapter.ViewHolder> {
private Context context;
public YourRecyclerViewAdapter(Context context) {
this.context = context;
}
@Override
public void onBindViewHolder(@NonNull final ViewHolder holder, final int position) {
String string = context.getString(R.string.your_string);
}