30 votes

android:les entrées dans recyclerview

Je l'ai utilisé, listview avec des entrées d'attribut comme ci-dessous :

<ListView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:entries="@array/fi"/>

Maintenant, je suis en la convertissant en RecyclerView

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

Je veux savoir si nous avons android:entries d'attribut en RecyclerView? Ou tout autre attribut au lieu d'entrées?

28voto

rciovati Points 5991

Comme correctement expliqué dans les autres réponses, il n'y a pas un attribut de remplir le RecyclerView à partir de xml. Cependant, l'utilisation de l' Android de liaison de données , vous pouvez créer un attribut assez facilement:

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <android.support.v7.widget.RecyclerView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:entries="@{@stringArray/fi}"
        app:layoutManager="android.support.v7.widget.LinearLayoutManager"/>
</layout>

Ici, la liaison de l'adaptateur de définition:

import android.databinding.BindingAdapter;

public class RecyclerViewBindings {

    @BindingAdapter("entries")
    public static void entries(RecyclerView recyclerView, String[] array) {
        recyclerView.setAdapter(new SimpleArrayAdapter(array));
    }

    static class SimpleArrayAdapter extends RecyclerView.Adapter<SimpleHolder> {

        private final String[] mArray;

        public SimpleArrayAdapter(String[] array) {
            mArray = array;
        }

        @Override
        public SimpleHolder onCreateViewHolder(ViewGroup parent, int viewType) {
            final LayoutInflater inflater = LayoutInflater.from(parent.getContext());
            final View view = inflater.inflate(android.R.layout.simple_list_item_1, parent, false);
            return new SimpleHolder(view);
        }

        @Override
        public void onBindViewHolder(SimpleHolder holder, int position) {
            holder.mTextView.setText(mArray[position]);
        }

        @Override
        public int getItemCount() {
            return mArray.length;
        }
    }

    static class SimpleHolder extends RecyclerView.ViewHolder {

        private final TextView mTextView;

        public SimpleHolder(View itemView) {
            super(itemView);
            mTextView = (TextView) itemView.findViewById(android.R.id.text1);
        }
    }
}

Ensuite, vous devez utiliser l' DataBindingUtil méthodes pour gonfler la mise en page.

Gonfler à l'intérieur d'une Activité:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    DataBindingUtil.setContentView(this, R.layout.content_main);
}

Gonfler à l'intérieur d'un Fragment:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    ContentMainBinding bindings = DataBindingUtil.inflate(inflater, R.layout.content_main, container, false);
    return bindings.getRoot();
}

5voto

Amrut Bidri Points 2270

Pas de. Il n'est pas directement disponible attribut en RecyclerView. Vous devez le faire à partir de code java par programmation à l'aide d' LayoutManager et RecyclerView.Adapter. Reportez-vous à cette réponse.

RAISON: Comme nous le savons, RecyclerView de ne pas gonfler jusqu'à ce que nous nous sommes fixés un LayoutManager pour elle. Aussi, LayoutManager est nécessaire pour gonfler élément individuel vues d' RecyclerView. Ces différents point de vues sont récupérées à partir de l' RecyclerView.Adapter. Donc, jusqu'à ce que vous définissez à la fois l' LayoutManager et RecyclerView.Adapter de RecyclerView, vous ne pouvez pas utiliser RecyclerView.

J'espère que cette réponse vous aidera.

5voto

Mina Samy Points 3207

J'ai peur que cela n'est pas possible de sortir de la boîte, vous pouvez étendre la RecyclerView et de définir votre propre attribut personnalisé qui accepte un tableau de chaîne, vous devez remplir votre RecyclerView Adaptateur avec ces valeurs.

Suivez ce lien: http://developer.android.com/training/custom-views/create-view.html#customattr

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X