2016-07-20 12 views
0

こんにちは私はこのRecyclerViewをセットアップして、間違っているものを見つけることができません。前もって感謝します。私はRecyclerViewが表示されていると確信していますが、私はプルダウンしてプルアップすることができるメインのアクティビティ画面では、淡い色合いです。私は問題が私の行為のこの部分の周りを回っているかもしれないと思う:RecyclerViewが表示されない

getSupportActionBar().setTitle(null); 
    recyclerView = (RecyclerView) findViewById(R.id.line_list); 
    adapter=new MyAdapter(getApplicationContext(),getData()); 
    recyclerView.setAdapter(adapter); 
    recyclerView.setLayoutManager(new LinearLayoutManager(getApplicationContext())); 

アクティビティコード;

import android.content.Intent; 
import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.support.v7.widget.LinearLayoutManager; 
import android.support.v7.widget.RecyclerView; 
import android.support.v7.widget.Toolbar; 
import android.view.Menu; 
import android.view.MenuItem; 

import java.util.ArrayList; 
import java.util.List; 


public class Lines extends AppCompatActivity { 

private RecyclerView recyclerView; 
private MyAdapter adapter; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.lines); 

    Toolbar myToolbar = (Toolbar) findViewById(R.id.toolbar_top); 
    setSupportActionBar(myToolbar); 
    getSupportActionBar().setTitle(null); 
    recyclerView = (RecyclerView) findViewById(R.id.line_list); 
    adapter=new MyAdapter(getApplicationContext(),getData()); 
    recyclerView.setAdapter(adapter); 
    recyclerView.setLayoutManager(new  LinearLayoutManager(getApplicationContext())); 

} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.main_item, menu); 
    return true; 
} 
@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    int i = item.getItemId(); 
    switch (i) { 
     case R.id.action_search: 
      Intent s = new Intent(this, SearchActivity.class); 
      startActivity(s); 
      return true; 

     case R.id.action_add: 
      Intent a = new Intent(this, AddLine.class); 
      startActivity(a); 
      return true; 


     case R.id.action_wheel: 
      Intent w = new Intent(this, Settings.class); 
      startActivity(w); 
      return true; 

    } 
    return super.onOptionsItemSelected(item); 
} 

public static List<Information> getData(){ 

    List<Information> data=new ArrayList<>(); 

    int[] icons={R.drawable.ic_place_black_24dp,R.drawable.ic_place_black_24dp2, 
      R.drawable.ic_place_black_24dp3}; 

    String[] titles={"Homework","Birthday","Index"}; 

    for(int i=0;i<titles.length && i<icons.length;i++){ 

     Information current=new Information(); 

     current.iconId=icons[i]; 

     current.title=titles[i]; 

     data.add(current); 

    } 
    return data; 
} 

} 

の.xmlコード:

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

<android.support.v7.widget.Toolbar 
    android:id="@+id/toolbar_top" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:background="#000000" 
    android:minHeight="?attr/actionBarSize"> 

    <TextView 
     android:id="@+id/toolbar_title" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center" 
     android:text="LINES" 
     android:textColor="#ffffff" 
     android:textSize="25sp" /> 
</android.support.v7.widget.Toolbar> 

<android.support.v7.widget.RecyclerView 
    android:id="@+id/line_list" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

</android.support.v7.widget.RecyclerView> 

</LinearLayout> 

行要素定義アクティビティコード:

package com.example.patri.index01; 

public class Information { 

int iconId; 

String title; 

} 

アダプタアクティビティコード:

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.ImageView; 
import android.widget.TextView; 
import java.util.Collections; 
import java.util.List; 

public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> { 
private LayoutInflater inflater; 
List<Information> data= Collections.emptyList(); 
public MyAdapter(Context context, List<Information> data){ 
    inflater=LayoutInflater.from(context); 
    this.data=data; 

} 
@Override 
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 

    View view=inflater.inflate(R.layout.custom_row, parent,false); 
    MyViewHolder holder=new MyViewHolder(view); 
    return holder; 
} 

@Override 
public void onBindViewHolder(MyViewHolder holder, int position) { 

    Information current=data.get(position); 

    holder.title.setText(current.title); 
    holder.icon.setImageResource(current.iconId); 


} 

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

class MyViewHolder extends RecyclerView.ViewHolder{ 
    TextView title; 

    ImageView icon; 

    public MyViewHolder(View itemView) { 

     super(itemView); 

     title= (TextView)itemView.findViewById(R.id.listText); 

     icon= (ImageView) itemView.findViewById(R.id.listIcon); 

    } 
} 
} 

行の.xmlコード:

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

<ImageView 
    android:id="@+id/listIcon" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:src="@drawable/ic_place_black_24dp" 
    android:padding="8dp"/> 
<TextView 
    android:id="@+id/listText" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Dummy text" 
    android:padding="8dp" 
    android:textColor="#000000"/> 
</LinearLayout> 
+0

は「recyclerView.setLayoutManagerを置くようにしてください(新しいLinearLayoutManager(getApplicationContext())); ' 'recyclerView.setAdapter(アダプタ);の上にあります。 – Mrunal

+0

動作しませんでした。 @Mrunal –

+0

'LinearLayoutManager'は' RecyclerView'と同じコンテキストでインスタンス化する必要があります。したがって、 'Activity'の中にある場合、' getApplicationContext() 'ではなく' this'を使用します。これにより、今後発生する可能性のあるテーマの問題が修正されます。 – Andy

答えて

1

あなたはアイテム数が0です。それは高さだように、あなたはdata.size()


を返す必要があります

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

あなたのrow.xmlを修正する必要があり、それがあることが必要としてだけ同じ大きさ:

<LinearLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="horizontal" android:layout_width="match_parent" 
android:layout_height="wrap_content"> 
+0

それは働いた!しかし、私は各行が画面全体を占める別の問題を抱えています。 @アンディ心配しないで、各行の高さを変更しました。ありがとうございました! –

関連する問題