2016-07-20 25 views
0

Hallo Ich habe gerade diese RecyclerView eingerichtet und kann nicht finden, was los ist. Danke im Voraus. Ich bin mir sicher, dass der RecyclerView auftaucht, obwohl sie auf dem Hauptbildschirm einen schwachen Schatten haben, wo ich runterziehen und hochziehen kann. Ich denke, das Problem kann sich um diesen Teil meiner Linienaktivität drehen:RecyclerView erscheint nicht

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

Aktivitätscode;

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 Code:

<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> 

Row Elemente Definitionen Aktivität Code:

package com.example.patri.index01; 

public class Information { 

int iconId; 

String title; 

} 

Adapter Aktivitätscode:

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); 

    } 
} 
} 

Row .xml Code:

<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

Try 'recyclerView.setLayoutManager zu setzen (neuer LinearLayoutManager (getApplicationContext())); ' über dem 'recyclerView.setAdapter (Adapter);' – Mrunal

+0

Es hat nicht funktioniert. @Mrunal –

+0

Sie sollten 'LinearLayoutManager' instanziiert werden mit dem gleichen Kontext wie der 'RecyclerView'. Wenn es in einer 'Activity' ist, verwenden Sie' this' anstelle von 'getApplicationContext()'. Dadurch werden Probleme behoben, die in Zukunft auftreten können. – Andy

Antwort

1

Ihre Artikelanzahl ist 0.

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

sollten Sie kehren data.size()


Sie sollten Ihre row.xml so fixieren, dass es Höhe ist nur so groß, wie es sein muss:

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

Es hat funktioniert! Aber ich habe ein anderes Problem, jede Zeile nimmt den ganzen Bildschirm ein. @Andy Macht nichts, ich habe die Höhe jeder Zeile geändert. Danke! –