0

GridViewを含むCardViewを含むRecyclingViewを実装しようとしています。どんなエラーも表示されないだけです。私はアプリを実行しようとすると白い画面。CardViewとGridViewでRecyclerViewを実装する

public class MainActivity extends AppCompatActivity { 
    TextView mWeatherTemp, mWeatherDescript; 
    RecyclerView.Adapter adapter; 
    Context context; 
    GridView gridView; 
    String[] mTime = { 
      "1:00", 
      "2:00", 
      "3:00", 
      "4:00", 
      "5:00", 
      "6:00", 
      "7:00", 
      "8:00", 
      "9:00", 
      "10:00", 
      "11:00", 

    }; 

    String[] mDegreeTemp = { 
      "8°", 
      "12°", 
      "43°", 
      "100°", 
      "32°", 
      "12°", 
      "58°", 
      "39°", 
      "29°", 
      "86°", 
      "70°", 

    }; 

    int[] imageId = { 
      R.mipmap.ic_launcher 
    }; 

    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     context = getApplicationContext(); 
     Toolbar mToolbar = (Toolbar) findViewById(R.id.mMainToolbar); 
     setSupportActionBar(mToolbar); 
     mToolbar.setBackgroundColor(ContextCompat.getColor(this, R.color.weather_cool)); 

     mWeatherTemp = (TextView) findViewById(R.id.tvWeatherTemp); 
     mWeatherDescript = (TextView) findViewById(R.id.tvWeatherText); 

     Typeface robotDisplay3 = Typeface.createFromAsset(getApplicationContext().getAssets(), 
       "font/Roboto-Regular.ttf"); 
     mWeatherTemp.setTypeface(robotDisplay3); 

     RecyclerView recyclerView = (RecyclerView) findViewById(R.id.mHourlyRV); 
     HourlyGridAdapter adapter = new HourlyGridAdapter(getApplicationContext(), mTime, mDegreeTemp, imageId); 
     gridView = (GridView) findViewById(R.id.hourlyGridView); 
     gridView.setAdapter(adapter); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     getMenuInflater().inflate(R.menu.settings, menu); 
     return super.onCreateOptionsMenu(menu); 
    } 
} 


public class HourlyGridAdapter extends BaseAdapter { 
    private Context mContext; 
    private String[] mTime; 
    private String[] mDegreeTemp; 
    private final int[] imageId; 

    public HourlyGridAdapter(Context context, String[] mTime, String[] mDegreeTemp, int[] imageId) { 
     mContext = context; 
     this.imageId = imageId; 
     this.mDegreeTemp = mDegreeTemp; 
     this.mTime = mTime; 
    } 

    @Override 
    public int getCount() { 
     return 0; 
    } 

    @Override 
    public Object getItem(int position) { 
     return null; 
    } 

    @Override 
    public long getItemId(int position) { 
     return 0; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     ViewHolder holder; 
     LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     if (convertView == null) { 
      convertView = inflater.inflate(R.layout.hourly_single, null, false); 
      holder = new ViewHolder(); 
      holder.timeText = (TextView) convertView.findViewById(R.id.timePlaceHolder); 
      holder.degreeText = (TextView) convertView.findViewById(R.id.degreePlaceHolder); 
      holder.weatherImage = (ImageView) convertView.findViewById(R.id.weatherIconHolder); 

      holder.timeText.setText(mTime[position]); 
      holder.degreeText.setText(mDegreeTemp[position]); 
      holder.weatherImage.setImageResource(imageId[position]); 

     } else { 
      holder = (ViewHolder) convertView.getTag(); 
     } 

     return convertView; 
    } 

    static class ViewHolder { 
     TextView timeText, degreeText; 
     ImageView weatherImage; 
    } 
} 

レイアウト:全てリサイクルビュー内CardView内部のGridViewを持つことが可能である場合

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical"> 

    <android.support.v7.widget.CardView xmlns:card_view="http://schemas.android.com/apk/res-auto" 
     android:id="@+id/card_view" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_margin="5dp" 
     card_view:cardCornerRadius="6dp"> 

     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:orientation="vertical"> 

      <TextView 
       android:id="@+id/tvDate" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="TODAY" /> 

      <View 
       android:layout_width="match_parent" 
       android:layout_height="1dp" 
       android:background="@color/forecast_card_divider" /> 

      <GridView 
       android:id="@+id/hourlyGridView" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_marginTop="16dp" 
       android:horizontalSpacing="12dp" 
       android:numColumns="4" 
       android:verticalSpacing="12dp" /> 

     </LinearLayout> 
    </android.support.v7.widget.CardView> 
</LinearLayout> 

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:orientation="vertical"> 

    <TextView 
     android:id="@+id/timePlaceHolder" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="@string/timePlaceHolderText" 
     android:layout_gravity="center"/> 

    <ImageView 
     android:id="@+id/weatherIconHolder" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:src="@mipmap/ic_launcher" 
     android:layout_gravity="center"/> 

    <TextView 
     android:id="@+id/degreePlaceHolder" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="12°" 
     android:layout_gravity="center"/> 

</LinearLayout> 

イムさえわかりません。これを作成しようとするどんな助けも、きちんと整理されるでしょう。

PS。私はそれがdoesntの仕事として宣言されたリサイクルのビューthatsを呼び出すことがわかりませんし、アプリケーションをクラッシュさせ、GridViewはnullです。ここで何をすべきかわからない。すべてのtextViewsとImageViewがgridviewではなくcardviewであるため、recyclerview用のアダプタを作成する必要があるかどうかは不明です。

+0

リサイクラービュー用のレイアウトマネージャーまたはアダプターはありません。リサイクラーの表示に何かを表示するには、両方を持っている必要があります。 – cyroxis

答えて

0

リサイクラーアダプターではなくアクティビティーである、recyclerviewの各項目内にあるgridviewのアダプターを初期設定して設定しています。すべてのgridview関連コードをrecyclerviewのアダプターに削除することを検討してください。

関連する問題