2017-01-27 5 views
-1

Ich habe viele Möglichkeiten zum Hinzufügen von Recyclerview innerhalb eines Fragments ausprobiert. Ich bin neu für Android. Mein Android hat 5 Fragmente eines dieser Fragmente, die ich eine Recyclerview hinzufügen muss. hier ist mein CodeSo fügen Sie eine Recycleransicht zum Fragment hinzu

notification_item.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/notification_item_root" 
    android:layout_width="match_parent" 
    android:layout_height="56dp" 
    android:gravity="center_vertical|left" 
    android:orientation="horizontal" 
    android:paddingLeft="16dp"> 

    <de.hdodenhof.circleimageview.CircleImageView 
     android:id="@+id/notification_item_img" 
     android:layout_width="36dp" 
     android:layout_height="36dp" 
     android:src="@android:drawable/ic_input_get" /> 

    <TextView 
     android:id="@+id/notification_item_text" 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     android:gravity="center" 
     android:paddingLeft="8dp" 
     android:text="Test Testre" /> 

</LinearLayout> 

notification_Fragment.xml

<?xml version="1.0" encoding="utf-8"?> 
<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.app.AlertController.RecycleListView 
    android:id="@+id/notification_list" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" /> 

</LinearLayout> 

NotificationItem.java

public class NotificationItem { 
    private String title; 
    private int imageResId; 

    public String getTitle() { 
     return title; 
    } 

    public void setTitle(String title) { 
     this.title = title; 
    } 

    public int getImageResId() { 
     return imageResId; 
    } 

    public void setImageResId(int imageResId) { 
     this.imageResId = imageResId; 
    } 
} 

NotificationData.java

public class NotificationData { 
    private static final String[] textItem = {"pathum", "sai", "charu"}; 
    private static final int[] imgItem = {android.R.drawable.ic_popup_reminder, android.R.drawable.ic_menu_add, android.R.drawable.ic_menu_delete}; 

    public static List<NotificationItem> getListData() { 
     List<NotificationItem> data = new ArrayList<>(); 

     for (int x = 0; x < 4; x++) { 
      for (int i = 0; i < textItem.length && i < imgItem.length; i++) { 
       NotificationItem item = new NotificationItem(); 
       item.setImageResId(imgItem[i]); 
       item.setTitle(textItem[i]); 
       data.add(item); 
      } 
     } 

     return data; 
    } 

} 

NotificationAdapter.java

public class NotificationAdapter extends RecyclerView.Adapter<NotificationAdapter.NotificationHolder> { 

    private List<NotificationItem> listData; 
    private LayoutInflater inflater; 

    public NotificationAdapter(List<NotificationItem> listData, Context c) { 

     this.inflater = LayoutInflater.from(c); 
     this.listData = listData; 
    } 

    @Override 
    public NotificationHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
     View view = inflater.inflate(R.layout.notification_item,parent,false); 
     return new NotificationHolder(view); 
    } 

    @Override 
    public void onBindViewHolder(NotificationHolder holder, int position) { 
     NotificationItem item = listData.get(position); 
     holder.title.setText(item.getTitle()); 
     holder.icon.setImageResource(item.getImageResId()); 
    } 

    @Override 
    public int getItemCount() { 
     return listData.size(); 
    } 

    class NotificationHolder extends RecyclerView.ViewHolder { 

     private TextView title; 
     private CircleImageView icon; 
     private View container; 

     public NotificationHolder(View itemView) { 
      super(itemView); 

      title = (TextView) itemView.findViewById(R.id.notification_item_text); 
      icon = (CircleImageView) itemView.findViewById(R.id.notification_item_img); 
      container = itemView.findViewById(R.id.notification_item_root); 
     } 
    } 
} 

NotificationFragment.java

public class NotificationFragment extends Fragment { 

    RecyclerView recyclerView; 
    NotificationAdapter notificationAdapter; 

    @Nullable 
    @Override 
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 

     View rootView = inflater.inflate(R.layout.notification_fragment, container, false); 
    recyclerView = (RecyclerView) rootView.findViewById(R.id.notification_list); 

    recyclerView.setLayoutManager(new LinearLayoutManager(getActivity())); 

    notificationAdapter = new NotificationAdapter(NotificationData.getListData(),this); 
    recyclerView.setAdapter(notificationAdapter); 


    return rootView; 
} 

}

Ich konnte es nicht richtig machen in NotificationFragment.java und NotificationAdapter.java bitte helfen Sie mir Jungs.

+1

define * Ich konnte es nicht richtig machen * Wo ist das Problem? – Selvin

+0

können Sie Ihre Recyclerview in Ihrem Layout sehen. Vorschau – Anil

+0

@AnilDS es Vorschau ist Standard Recyclerview –

Antwort

0

Sie verwenden falsche Klasse für RecyclerView, statt AlertController.RecyclerListView verwenden:

<!-- A RecyclerView with some commonly used attributes --> 
<android.support.v7.widget.RecyclerView 
    android:id="@+id/my_recycler_view" 
    android:scrollbars="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"/> 

Hier sind einige weitere Informationen:

RecyclerView

+0

ok es ist fertig, aber ich brauche Hilfe für diese Dateien NotificationFragment.java & NotificationAdapter.java –

-1

1) erste Abhängigkeit zu Ihrer App hinzufügen Level-Gradle-Datei, dann synchronisieren Sie Ihr Projekt

compile 'com.android.support:recyclerview-v7:23.4.0' 

2) gehen Sie zu Ihrem Layout-Datei (zB: activity_main.xml) recyclerview Tag in Ihrem Basislayout

<RelativeLayout 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" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    app:layout_behavior="@string/appbar_scrolling_view_behavior" 
    tools:context="com.examples.rehan.excluzo.Fragments.OneFragment"> 

<android.support.v7.widget.RecyclerView 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:scrollbars="vertical" 
    android:id="@+id/recycler_view"> 

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

3) erstellen Sie eine Klasse model.java hinzufügen und Ihren Code einfügen.

öffentliches Klassenmodell { private String name, gender;

public model() { 
} 

public model(String name, String gender) { 
    this.name= name; 
    this.gender= gender; 
} 

public String getGender() { 
    return gender; 
} 

public void setGender(String gneder) { 
    this.gender= gender; 
} 


public String getName() { 
    return name; 
} 

public void setName(String name) { 
    this.name= name; 
} 

}

4) XML-Datei in Ihrem Layout-Ordner item_layout.xml erstellen und fügen Sie diesen Code

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:focusable="true" 
    android:paddingLeft="16dp" 
    android:paddingRight="16dp" 
    android:paddingTop="10dp" 
    android:paddingBottom="10dp" > 

    <TextView 
     android:id="@+id/name" 
     android:textColor="@color/title" 
     android:textSize="16dp" 
     android:textStyle="bold" 
     android:layout_alignParentTop="true" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" /> 

    <TextView 
     android:id="@+id/gender" 
     android:layout_below="@id/title" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" /> 

</RelativeLayout> 

5) Ihre Notwendigkeit Adapter erstellen Kind Blick auf Ihre Listview hinzuzufügen.Erstellen Sie eine Datei testAdapter.java und fügen Sie diesen Code ein.

hier in der Listenansicht werde ich nur zwei Elemente, die (zB: Name und Geschlecht)

public class testAdapter extends RecyclerView.Adapter<testAdapter.MyViewHolder> { 


    private List<model> productList; 
    Context context; 
    @Override 
    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
     View itemView = LayoutInflater.from(parent.getContext()) 
       .inflate(R.layout.item_layout, parent, false); 

     return new MyViewHolder(itemView); 
    } 

    @Override 
    public void onBindViewHolder(MyViewHolder holder, int position) { 
     model product = productList.get(position); 
     holder.name.setText(product.getName()); 
     holder.gender.setText(product.getGender()); 
    } 

    @Override 
    public int getItemCount() { 
     return productList.size(); 
    } 

    public class MyViewHolder extends RecyclerView.ViewHolder { 
     public TextView name,gender; 

     public MyViewHolder(View view) { 
      super(view); 
      name = (TextView) view.findViewById(R.id.name); 
      gender = (TextView) view.findViewById(R.id.gender); 
     } 
    } 



    public testAdapter(List<model> productList, Context context) { 
     this.productList = productList; 
     this.context = context; 
    } 

} 

6) jetzt Ihre MainActivity.java Goto und fügen Sie diesen Code

import android.content.Context; 
import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.support.v7.widget.DefaultItemAnimator; 
import android.support.v7.widget.LinearLayoutManager; 
import android.support.v7.widget.RecyclerView; 
import android.support.v7.widget.Toolbar; 
import android.view.GestureDetector; 
import android.view.MotionEvent; 
import android.view.View; 
import android.widget.Toast; 

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

public class MainActivity extends AppCompatActivity { 
    private List<modle> movieList = new ArrayList<>(); 
    private RecyclerView recyclerView; 
    private testAdapter mAdapter; 

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

     recyclerView = (RecyclerView) findViewById(R.id.recycler_view); 

     mAdapter = new testAdapter(movieList); 
     RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(getApplicationContext()); 
     recyclerView.setLayoutManager(mLayoutManager); 
     recyclerView.setItemAnimator(new DefaultItemAnimator()); 
     recyclerView.setAdapter(mAdapter); 

     preparedata(); 
    } 

    private void preparedata() { 
     model movie = new model("XXX", "Male"); 
     movieList.add(movie); 

     //add the items according to your wish 
     //name,gender 
     //here i have added all items with same name and gender. you can change it 
     model movie = new model("XXX", "Male"); 
     movieList.add(movie); 

     model movie = new model("XXX", "Male"); 
     movieList.add(movie); 

     model movie = new model("XXX", "Male"); 
     movieList.add(movie); 

     model movie = new model("XXX", "Male"); 
     movieList.add(movie); 

     model movie = new model("XXX", "Male"); 
     movieList.add(movie); 


     model movie = new model("XXX", "Male"); 
     movieList.add(movie); 

     mAdapter.notifyDataSetChanged(); 
    } 
} 

Hope Diese hilft :)

+0

Thnx für Ihre Antwort. aber ich muss RecyclerView in ein Fragment hinzufügen. nicht zur Aktivität. Ich habe diese Sache mit Aktivität gemacht. Aber in diesem Fall muss ich es in einem Fragment machen. –

Verwandte Themen