2017-10-01 11 views
0

@override onBindViewHolderでの方法では、私は、エラーメッセージが表示されます:RecyclerViewアダプタは、Android

私はすべての可能なエラーをチェック 静的コンテキスト

から参照することはできません非静的フィールド「mWeatherTextView」しかし、私のコードさえ提供されたソリューションに似ていますが、提供されたソリューションのために表示されるエラーはありません、何も見つかりませんでした。

package com.example.android.sunshine; 

import android.content.Context; 
import android.support.v7.widget.RecyclerView; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.TextView; 

public class ForecastAdapter extends 
RecyclerView.Adapter<ForecastAdapter.ForecastAdapterViewHolder> { 
private String[] mWeatherData; 
public ForecastAdapter(){} 
public class ForecastAdapterViewHolder extends RecyclerView.ViewHolder{ 
public final TextView mWeatherTextView; 
public ForecastAdapterViewHolder(View view){ 
super(view); 
mWeatherTextView =(TextView)view.findViewById(R.id.tv_weather_data); 
    } 
} 
@Override 
public ForecastAdapterViewHolder onCreateViewHolder(ViewGroup parent, int 
viewType) { 
Context context = parent.getContext(); 
int layoutIdForListItem = R.layout.forecast_list_item; 
boolean shouldAttachToParentImmediately = false; 
LayoutInflater inflater = LayoutInflater.from(context); 
View view = inflater.inflate(layoutIdForListItem, 
         parent,shouldAttachToParentImmediately); 
return new ForecastAdapterViewHolder(view); 
} 
@Override 
public void onBindViewHolder(ForecastAdapterViewHolder holder, int position) 
{ 
    String weatherForThisDay = mWeatherData[position]; 
    ForecastAdapterViewHolder.mWeatherTextView.setText(weatherForThisDay);  

    _**/* error message says "Non-static field 'mWeatherTextView' cannot be referenced from a static context" */**_ 
    } 
@Override 
public int getItemCount() { 
    if(mWeatherData == null) return 0; 
    return mWeatherData.length; 
} 
} 

答えて

0

を使用し、あなたは常に、引数として渡されたholderを使用します。したがってをholderに変更し、setText行に変更してください。

package com.example.android.sunshine; 

import android.content.Context; 
import android.support.v7.widget.RecyclerView; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.TextView; 

public class ForecastAdapter extends 
RecyclerView.Adapter<ForecastAdapter.ForecastAdapterViewHolder> { 
private String[] mWeatherData; 
public ForecastAdapter(){} 
public class ForecastAdapterViewHolder extends RecyclerView.ViewHolder{ 
public final TextView mWeatherTextView; 
public ForecastAdapterViewHolder(View view){ 
super(view); 
mWeatherTextView =(TextView)view.findViewById(R.id.tv_weather_data); 
    } 
} 
@Override 
public ForecastAdapterViewHolder onCreateViewHolder(ViewGroup parent, int 
viewType) { 
Context context = parent.getContext(); 
int layoutIdForListItem = R.layout.forecast_list_item; 
boolean shouldAttachToParentImmediately = false; 
LayoutInflater inflater = LayoutInflater.from(context); 
View view = inflater.inflate(layoutIdForListItem, 
         parent,shouldAttachToParentImmediately); 
return new ForecastAdapterViewHolder(view); 
} 
@Override 
public void onBindViewHolder(ForecastAdapterViewHolder holder, int position) 
{ 
    String weatherForThisDay = mWeatherData[position]; 
    holder.mWeatherTextView.setText(weatherForThisDay);  

    _**/* error message says "Non-static field 'mWeatherTextView' cannot be referenced from a static context" */**_ 
    } 
@Override 
public int getItemCount() { 
    if(mWeatherData == null) return 0; 
    return mWeatherData.length; 
} 
} 
+0

Thankuを提案されている場合でも...唯一の正しい答えのために緑色のチェックを可能に...あなたの編集は私の問題を解決しました –

0

代わりのForecastAdapterViewHolder.mWeatherTextView.setText(weatherForThisDay);

onBindViewHolder

holder.mWeatherTextView.setText(weatherForThisDay); 
+0

Thanku ...あなたの編集は....私の問題を解決:(しかしstackoverflowのは、同じ答えが複数回... –

関連する問題