1

Я делал приложение, которое использует RecyclerView, но его не показывая никаких thing..why содержимого вида ресайклера не было показан up.my кода нижеРесайклер Просмотр Не Показан Ничего

item_contact.xml

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

    <TextView 
     android:id="@+id/contact_name" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" /> 

    <Button 
     android:id="@+id/message_button" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:paddingLeft="16dp" 
     android:paddingRight="16dp" 
     android:textSize="10sp" /> 
</LinearLayout> 

ContactsAdaptor.java

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.Button; 
import android.widget.TextView; 

import java.util.List; 
public class ContactsAdapter extends RecyclerView.Adapter<ContactsAdapter.ViewHolder> { 

    private List<Contact> mContacts; 
    public ContactsAdapter(List<Contact> contacts) { 
     mContacts = contacts; 
    } 

    @Override 
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
     Context context = parent.getContext(); 
     LayoutInflater inflater = LayoutInflater.from(context); 
     View contactView = inflater.inflate(R.layout.item_contact, parent, false); 
     ViewHolder viewHolder = new ViewHolder(contactView); 
     return viewHolder; 
    } 

    @Override 
    public void onBindViewHolder(ViewHolder viewHolder, int position) { 
     Contact contact = mContacts.get(position); 

     TextView textView = viewHolder.nameTextView; 
     textView.setText(contact.getName()); 

     Button button = viewHolder.messageButton; 

     if (contact.isOnline()) { 
      button.setText("Message"); 
      button.setEnabled(true); 
     } else { 
      button.setText("Offline"); 
      button.setEnabled(false); 
     } 
    } 

    @Override 
    public int getItemCount() { 
     return mContacts.size(); 
    } 
    public static class ViewHolder extends RecyclerView.ViewHolder { 
     public TextView nameTextView; 
     public Button messageButton; 
     public ViewHolder(View itemView) { 
      super(itemView); 
      nameTextView = (TextView) itemView.findViewById(R.id.contact_name); 
      messageButton = (Button) itemView.findViewById(R.id.message_button); 
     } 
    } 
} 

Contact.java

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

public class Contact { 
    private String mName; 
    private boolean mOnline; 

    public Contact(String name, boolean online) { 
     mName = name; 
     mOnline = online; 
    } 

    public String getName() { 
     return mName; 
    } 

    public boolean isOnline() { 
     return mOnline; 
    } 

    private static int lastContactId = 0; 

    public static List<Contact> createContactsList(int numContacts) { 
     List<Contact> contacts = new ArrayList<Contact>(); 

     for (int i = 1; i <= numContacts; i++) { 
      contacts.add(new Contact("Person " + ++lastContactId, i <= numContacts/2)); 
     } 

     return contacts; 
    } 
} 

MainActivity.java

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
    View rootView = inflater.inflate(R.layout.fragment_home, container, false); 
    RecyclerView rvContacts = (RecyclerView) rootView.findViewById(R.id.view); 
    ContactsAdapter adapter = new ContactsAdapter(Contact.createContactsList(20)); 
    rvContacts.setAdapter(adapter); 
    rvContacts.setLayoutManager(new LinearLayoutManager(getContext())); 

пожалуйста, помогите мне

+2

Вы возвращаете 'rootView' в конце' onCreateView() 'в своем коде? – PPartisan

+0

Вы должны установить 'LayoutManager' перед вызовом' setAdapter() ', а не после него. –

+0

да и я сделал ... в моем коде, но не знаю, почему его не показывает –

ответ

5

код, который я написал был совершенно хороший и его работы без каких-либо проблем, в моей основной код высота RecyclearView равна нулю, поэтому я Бесполезный Получаем выход.

Смежные вопросы