Comment importer RecyclerView pour Android L-preview


90

Essayer d'utiliser le nouveau RecyclerView à partir de la bibliothèque de support. J'ai téléchargé la mise à jour 20 pour la bibliothèque de support à l'aide du gestionnaire de SDK.

J'ai ajouté le fichier jar au dossier libs - et ajouté au chemin de construction - pas de chance en utilisant RecyclerView.

J'ai essayé d'utiliser également la dépendance gradle selon l'API du développeur Android - je ne sais pas si c'est le bon endroit pour regarder - cette page est davantage liée à AndroidTV:

 com.android.support:recyclerview-v7:20.0.+

Impossible de synchroniser progressivement le projet.

Des idées?

Réponses:


82

J'ai créé en utilisant les lignes suivantes et cela fonctionne pour moi.

implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support:recyclerview-v7:28.0.0'

Pour AndroidX

implementation 'androidx.recyclerview:recyclerview:1.1.0'
implementation 'androidx.cardview:cardview:1.0.0'

Pour un tutoriel complet, veuillez voir ici


Erreur: l'exécution de la tâche «: app: dexDebug» a échoué. > com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Processus 'command' / usr / lib / jvm / java-7-openjdk-amd64 / bin / java '' terminé avec non -zéro valeur de sortie 2. J'obtiens cette erreur lorsque j'exécute un projet lorsque j'ajoute une deuxième dépendance dans mon projet. s'il vous plaît, réparez-le n'importe qui ??.
Ajay Bhayani

Le gradle.build de mon application a déjà compilé «com.android.support:appcompat-v7:23.2.1». J'ai donc essayé d'ajouter compile 'com.android.support:recyclerview-v7:23.2.1' - la même version avec appcompat, mais la synchronisation gradle a échoué, j'ai essayé de changer en "+" comme 'com.android.support: recyclerview-v7: 23.2. + ', a également échoué :(
Andiana

164

Deviner.

Vous devrez ajouter la dépendance de gradle suivante:

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

un autre problème que j'avais en compilant était le compileSdkVersion. Apparemment, vous devrez le compiler contreandroid-L

Votre fichier build.gradle devrait ressembler à ceci:

apply plugin: 'android'
android {
    compileSdkVersion 'android-L'
    buildToolsVersion '19.1.0'
    [...]
}
dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:recyclerview-v7:+'
}

2
compileSdkVersion 'android-L' - donne INSTALL_FAILED_OLDER_SDK
Oleksii Malovanyi

4
Comment faites-vous avec Eclipse?
développeur android

2
ce post reddit m'a un peu plus loin après avoir obtenu l'erreur INSTALL_FAILED_OLDER_SDK.
Oren

7
Pourquoi une bibliothèque de support dépendrait-elle de la dernière version d'Android? Cela va à l'encontre de l'objectif même d'avoir une bibliothèque de support.
Christopher Perry

2
Si vous souhaitez compiler avec une ancienne version d'Android, vous pouvez. Afin de se débarrasser de l'erreur INSTALL_FAILED_OLDER_SDK, vous devez remplacer votre <uses-sdk />déclaration dans votre fichier AndroidManifest.xml par:<uses-sdk tools:node="replace" />
Christopher Perry

9

Cela fonctionne pour moi:

compile 'com.android.support:recyclerview-v7:21.0.0-rc1'

1
ce n'est pas le problème, ce que vous avez écrit n'est qu'une autre version de ce qu'il a déjà inclus
AlleyOOP


4

Si vous avez compilé la version 22.2.0 du SDK, ajoutez ci-dessous la dépendance pour la vue recycleur et cardview supplémentaire pour la prise en charge de cardView

// pour inclure toute la bibliothèque dans le répertoire lib
compile fileTree(include: ['*.jar'], dir: 'libs')
// pour le support appcompat
compile 'com.android.support:appcompat-v7:22.2.0'
// pour inclure la conception de support google (il permet d'implémenter le thème de conception de matériel à partir de la version 2.3 et supérieure)
`compile 'com.android.support:design:22.2. 0 '

pour ajouter la vue recycleur, utilisez la dépendance suivante
compile 'com.android.support:recyclerview-v7:22.2.0'


Après cela, cliquez sur Construire-> reconstruire le projet et vous avez terminé.


3
compile 'com.android.support:recyclerview-v7:24.2.1'

Cela fonctionne pour moi. Essayez-le.


2

Les étapes devant moi manquent juste une étape.

Après avoir modifié le build.gradle (Module: app) et ajouté les dépendances suivantes:

compilez 'com.android.support:cardview-v7:21.0.+'
compilez 'com.android.support:recyclerview-v7:21.0.+'

(Ajoutez une vue de carte si nécessaire)

Vous devez ensuite aller dans Build> Clean Project pour vous débarrasser des éventuelles erreurs


Merci mec, je me débattais avec le studio Android depuis de nombreuses heures, votre idée de Clean Project a fait l'affaire, merci encore.
Diljeet

2
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:21.0.3'
compile 'com.android.support:recyclerview-v7:21.0.0'
}

Créez simplement vos dépendances comme ci-dessus dans le fichier build.gradle, cela a fonctionné pour moi.


2

dans mon cas je l'ai réparé en mettant compile 'com.android.support:recyclerview-v7:22.0.0' tant que dépendance dans mon build gradle

(avec Android Studio v.1.2.1.1 et tous les SDK mis à jour.)

C'est vraiment ennuyeux lorsque les codes sont mis à jour si rapidement et que l'EDI ne peut pas les suivre, et que vous devez les corriger manuellement, ce qui fait perdre du temps et des ressources.

Mais bon, enfin ça marche.


2

inclure la dépendance dans build.gradleet synchroniser le projet avec les gradlefichiers

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:25.1.0'

    //include the revision no, i.e 25.1.1
    implementation 'com.android.support:recyclerview-v7:25.1.1'
}

Incluez la révision (ici son 25.1.1) pour éviter les constructions imprévisibles, vérifiez les révisions de la bibliothèque


2
implementation 'com.android.support:appcompat-v7:28.0.0'

implementation 'com.android.support:recyclerview-v7:28.0.0'

Ci-dessus fonctionne pour moi dans le build.gradlefichier


1

J'ai utilisé un petit hack pour utiliser RecyclerView sur des appareils plus anciens. Je suis juste allé dans mon référentiel m2 local et j'ai récupéré les fichiers source de RecyclerView et les ai mis dans mon projet.

Vous pouvez trouver le code source ici:

<Android-SDK> \ extras \ android \ m2repository \ com \ android \ support \ recyclerview-v7 \ 21.0.0-rc1 \ recyclerview-v7-21.0.0-rc1-sources.jar


1

Les autres réponses n'ont pas fonctionné pour moi. J'ai dû ajouter cette ligne:

compilez 'com.android.support:recyclerview-v7:21.0.0'


1

-Allez à la partie DESIGN dans activity_main.xml -Dans la palette glisser-déposer, sélectionnez appCompactivity -Dans l' applicationCompactivity Sélectionnez RecyclerView -Sur la sélection, une boîte de dialogue apparaîtra, cliquez sur OK -Votre application de projet: gradle sera automatiquement mise à jour


1

Mes dépendances;

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile 'com.android.support:appcompat-v7:25.1.0'

    //RecyclerView dependency
    compile 'com.android.support:recyclerview-v7:25.1.0'

    // Instrumentation dependencies use androidTestCompile
    // (as opposed to testCompile for local unit tests run in the JVM)
    androidTestCompile 'junit:junit:4.12'
    androidTestCompile 'com.android.support:support-annotations:25.1.0'
    androidTestCompile 'com.android.support.test:runner:0.5'
    androidTestCompile 'com.android.support.test:rules:0.5'
}

J'ai ajouté uniquement compile 'com.android.support:recyclerview-v7:25.1.0' . L'important est d'ajouter une dépendance RecycleView qui a la même version que appcompat


1

Si vous utilisez la version mise à jour ou 2018 pour Android Studio ...

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

vous donnera une erreur avec le message suivant "La configuration 'compile' est obsolète et a été remplacée par 'implementation' et 'api'. Elle sera supprimée à la fin de 2018."

Essayez d'utiliser ceci

implementation 'com.android.support:recyclerview-v7:+'

1

J'ai utilisé celui-ci fonctionne pour moi. Une chose doit être considérée comme la appcompatversion que vous utilisez. J'utilise appcompat-v7:26.+donc cela fonctionne pour moi.

implementation 'com.android.support:recyclerview-v7:26.+'

0

Un excellent moyen d'importer le RecyclerView dans votre projet est le RecyclerViewLib . Il s'agit d'une bibliothèque open source qui a sorti RecyclerView pour le rendre sûr et facile à mettre en œuvre. Vous pouvez lire l'article de blog de l'auteur ici .

Ajoutez la ligne suivante en tant que dépendance gradle dans votre code:

dependencies {
    compile 'com.twotoasters.RecyclerViewLib:library:1.0.+@aar'
}

Plus d'informations pour savoir comment importer des dépendances gradle:

Bosnie, vous avez raison de dire que c'est ennuyeux. Gradle peut sembler compliqué mais il est extrêmement puissant et flexible. Tout est fait dans la langue groovy et apprendre le système gradle, c'est apprendre une autre langue juste pour que vous puissiez créer votre application Android. Ça fait mal maintenant, mais à long terme, vous allez l'adorer.

Consultez le build.gradle pour la même application. https://github.com/twotoasters/RecyclerViewLib/blob/master/sample/build.gradle Là où il fait ce qui suit, c'est là où il amène la lib dans le module (alias l'exemple d'application)

compile (project (':library')) {
    exclude group: 'com.android.support', module: 'support-v4' 
}

Faites attention à l'emplacement de ce fichier. Ce n'est pas le build.gradle de niveau supérieur

Comme la source de la bibliothèque se trouve dans le même projet, elle est capable de le faire avec le simple ':library'. Le excludedit à la bibliothèque d'utiliser le support v4 de l'exemple d'application. Ce n'est pas nécessaire mais c'est une bonne idée. Vous n'avez pas ou ne voulez pas avoir la source de la bibliothèque dans votre projet, vous devez donc pointer vers Internet pour cela. Dans build.gradle de votre module / app, vous mettriez cette ligne du début de cette réponse au même endroit. Ou, si vous suivez l'exemple des exemples, vous pouvez remplacer ':library'par ' com.twotoasters.RecyclerViewLib:library:1.0.+@aar 'et utiliser les exclusions.


j'ai eu cette erreur: Could not find any version that matches com.twotoasters.RecyclerViewLib:library:1.0.+- /
Besnik

Le mettez-vous au bon endroit dans votre build.gradle? Le mettez-vous dans vos modules build.gradle?
MinceMan le

où est le «bon» endroit? J'ai juste ajouté ces lignes à mon build.gradle, le placer à l'extérieur / à l'intérieur d'Android {}, à l'intérieur / à l'extérieur de buildscript {} mais rien n'a fonctionné pour moi. Je suis nouveau dans le classement et cela semble être très compliqué ... et quand je lis quelque chose comme "il suffit de mettre cette ligne ...", c'est très ennuyeux ... :-(
Besnik

1
@Besnik J'ai mis à jour ma réponse avec plus d'informations sur le système de génération de notes. J'espère que ces informations sont utiles.
MinceMan

Merci! je vais l'essayer dans les prochains jours :-)
Besnik

0
import android.support.v7.widget.RecyclerView;

Dans Android Studio, l'importation n'est pas aussi intuitive qu'on pourrait l'espérer. Essayez d'importer ce bit et voyez comment cela vous aide!


La question concernait la dépendance Gradle, pas l'importation Java.
OneCricketeer

0

Si quelqu'un a toujours ce problème - vous n'avez pas à changer compileSdkVersion, cela va simplement à l'encontre de l'objectif général des bibliothèques de support.

À la place, utilisez-les dans votre gradle.buildfichier:

compile 'com.android.support:cardview-v7:+'
compile 'com.android.support:recyclerview-v7:+'
compile 'com.android.support:palette-v7:+'`

1
Il n'est pas recommandé d'utiliser la notation +, au moins spécifier la version principale.
Dejan

0

Cela fonctionne pour moi

Définir l'autorisation Internet

 <uses-permission android:name="android.permission.INTERNET" >

Ajouter une dépendance

compile 'com.squareup.retrofit2:retrofit:2.1.0'
    compile 'com.google.code.gson:gson:2.6.2'
    compile 'com.squareup.retrofit2:converter-gson:2.1.0'
    compile 'com.google.code.gson:gson:2.6.2'
    compile 'com.squareup.retrofit2:converter-gson:2.1.0'
    compile 'com.squareup.okhttp3:logging-interceptor:3.4.1'
    compile 'com.squareup.okhttp3:okhttp:3.4.1'
    compile 'com.squareup.retrofit2:retrofit:2.1.0'
    compile ('com.squareup.retrofit2:converter-simplexml:2.1.0'){
        exclude group: 'stax', module: 'stax-api'
        exclude group: 'stax', module: 'stax'
        exclude group: 'xpp3', module: 'xpp3'
    }

Dans l'activité principale

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;
import android.widget.Toast;

import java.util.List;

import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
import retrofit2.Retrofit;
import retrofit2.converter.simplexml.SimpleXmlConverterFactory;

public class MainActivity extends AppCompatActivity {
    private BreakfastMenu breakfastMenu;
    List<BreakfastMenu> list;
    TextView responseText;
    APIInterface apiInterface;
    String name;
    String price;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        responseText=(TextView)findViewById(R.id.reponseText);
        apiInterface = APIClient.getClient().create(APIInterface.class);


        /**
         GET List Resources
         **/
        Call<BreakfastMenu> call = apiInterface.getBreakfastMenu();
        call.enqueue(new Callback<BreakfastMenu>() {
            @Override
            public void onResponse(Call<BreakfastMenu> call, Response<BreakfastMenu> response) {
               Log.d("TAG", response.code() + "");

                String displayResponse = "";
                BreakfastMenu resource = response.body();
                System.out.println(displayResponse+"display response   ");

                for (Food food : resource.getFoodList())
                {
                    name=food.getName();
                    price=food.getPrice();
                    System.out.println(name+price+"=========================================");
                    displayResponse += food.getName() + " " + food.getPrice()+"\n"+"\n";
                    Toast.makeText(MainActivity.this,name+price,Toast.LENGTH_LONG).show();
                }
                responseText.setText(displayResponse);

            }

            @Override
            public void onFailure(Call<BreakfastMenu> call, Throwable t) {
                call.cancel();
            }
        });

    }
}

Créer une classe APIClient.java

import okhttp3.OkHttpClient;
import okhttp3.logging.HttpLoggingInterceptor;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;
import retrofit2.converter.simplexml.SimpleXmlConverterFactory;

class APIClient {

    private static Retrofit retrofit = null;

    static Retrofit getClient() {

        HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
        interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
        OkHttpClient client = new OkHttpClient.Builder().addInterceptor(interceptor).build();


        retrofit = new Retrofit.Builder()
                .baseUrl("https://www.w3schools.com/")
                .addConverterFactory(SimpleXmlConverterFactory.create())
                .build();



        return retrofit;
    }

}

    enter code here

Make APIInterface.java

import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.Headers;
import retrofit2.http.POST;
import retrofit2.http.Query;

interface APIInterface {

    @GET("xml/simple.xml")
    @Headers({"Accept: application/xml",
            "User-Agent: Retrofit-Sample-App"})
    Call<BreakfastMenu> getBreakfastMenu();
}

In BreakfastMenu.java

import org.simpleframework.xml.ElementList;
import org.simpleframework.xml.Root;

import java.util.List;

@Root(name = "breakfast_menu")
public class BreakfastMenu
{

    @ElementList(inline = true)
    private List<Food> foodList;

    public BreakfastMenu()
    {
    }

    public List<Food> getFoodList()
    {
        return foodList;
    }

    public void setFoodList(List<Food> foodList)
    {
        this.foodList = foodList;
    }
}

Faire Food.java

import org.simpleframework.xml.Element;
import org.simpleframework.xml.Root;

@Root(name = "food")
public class Food
{

    @Element(name = "name")
    private String name;

    @Element(name = "price")
    private String price;

    @Element(name = "description")
    private String description;

    @Element(name = "calories")
    private String calories;

    public Food()
    {
    }

    public String getName()
    {
        return name;
    }

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

    public String getPrice()
    {
        return price;
    }

    public void setPrice(String price)
    {
        this.price = price;
    }

    public String getDescription()
    {
        return description;
    }

    public void setDescription(String description)
    {
        this.description = description;
    }

    public String getCalories()
    {
        return calories;
    }

    public void setCalories(String calories)
    {
        this.calories = calories;
    }
}

Dans activity_main.xml

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

        <TextView
            android:id="@+id/reponseText"
            android:layout_width="match_parent"
            android:layout_height="600dp"
          />


</Linear Layout>

0

Juste une mise à jour:

«compile» est désormais obsolète; il a été remplacé par «implémentation» et «api». Il sera supprimé à la fin de 2018 je crois. Pour plus d'informations, consultez: http://d.android.com/r/tools/update-dependency-configurations.html

Toutes les bibliothèques com.android.support doivent également utiliser exactement la même spécification de version; en outre, les bibliothèques de support telles que appcompat-v7 et recyclerview-v7 ne doivent pas utiliser une version différente de compileSdkVersion.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.