Come importare RecyclerView per Android L-preview


90

Tentativo di utilizzare il nuovo RecyclerView dalla libreria di supporto. Ho scaricato l'aggiornamento 20 per la libreria di supporto utilizzando il gestore SDK.

Ho aggiunto il file jar alla cartella libs - e aggiunto al percorso di compilazione - senza fortuna usando RecyclerView.

Ho provato a utilizzare anche la dipendenza gradle secondo l'API dello sviluppatore Android - non sono sicuro che questo sia il posto giusto per guardare - questa pagina è più correlata ad AndroidTV:

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

Impossibile sincronizzare gradualmente il progetto.

Qualche idea?

Risposte:


82

Ho creato usando le seguenti linee e questo funziona per me.

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

Per AndroidX

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

Per il tutorial completo, vedere qui


Errore: esecuzione non riuscita per l'attività ": app: dexDebug". > com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command' / usr / lib / jvm / java-7-openjdk-amd64 / bin / java '' finito con non -zero exit value 2. ottengo questo errore quando eseguo il progetto quando aggiungo la seconda dipendenza nel mio progetto. per favore, aggiustalo uno qualsiasi ??.
Ajay Bhayani

Gradle.build della mia app ha già compilato "com.android.support:appcompat-v7:23.2.1". Quindi ho provato ad aggiungere la compilazione 'com.android.support:recyclerview-v7:23.2.1' - la stessa versione con appcompat, ma la sincronizzazione gradle non è riuscita, ho provato a cambiare in "+" come 'com.android.support: recyclerview-v7: 23.2. + ', fallito anche :(
Andiana

164

Capito.

Dovrai aggiungere la seguente dipendenza gradle:

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

un altro problema che ho riscontrato durante la compilazione è stato il compileSdkVersion. Apparentemente dovrai compilarlo controandroid-L

Il tuo file build.gradle dovrebbe assomigliare a questo:

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' - fornisce INSTALL_FAILED_OLDER_SDK
Oleksii Malovanyi,

4
Come lo fai con Eclipse?
sviluppatore Android

2
questo post su reddit mi ha portato un po 'oltre dopo aver ricevuto l'errore INSTALL_FAILED_OLDER_SDK.
Oren

7
Perché una libreria di supporto dovrebbe dipendere dall'ultima versione di Android? Ciò vanifica l'intero scopo di avere una libreria di supporto.
Christopher Perry

2
Se vuoi compilare con una versione precedente di Android puoi farlo. Per eliminare l'errore INSTALL_FAILED_OLDER_SDK è necessario sostituire la <uses-sdk />dichiarazione nel file AndroidManifest.xml con:<uses-sdk tools:node="replace" />
Christopher Perry

9

Questo funziona per me:

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

1
non è questo il problema, quello che hai scritto è solo un'altra versione di ciò che ha già incluso
AlleyOOP


4

Se si dispone della versione SDK compilata 22.2.0, aggiungere di seguito la dipendenza per la visualizzazione riciclatore e la visualizzazione scheda aggiuntiva per il supporto di cardView

// per includere tutto il libarary nella directory lib
compile fileTree(include: ['*.jar'], dir: 'libs')
// per il supporto appcompat
compile 'com.android.support:appcompat-v7:22.2.0'
// per includere il design del supporto di google (rende possibile implementare il tema del material design dalla 2.3 e successive)
`compile 'com.android.support:design:22.2. 0 '

per aggiungere la vista riciclatore utilizzare la dipendenza seguente
compile 'com.android.support:recyclerview-v7:22.2.0'


Dopodiché fai clic su Costruisci-> Ricostruisci progetto e il gioco è fatto.


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

Questo funziona per me. Provalo.


2

Ai passaggi prima di me manca solo un passaggio.

Dopo aver modificato build.gradle (Modulo: app) e aggiunto le seguenti dipendenze:

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

(Aggiungi la visualizzazione della scheda se necessario)

È quindi necessario andare su Build> Clean Project per eliminare eventuali errori


Grazie amico, ho lottato con Android Studio da molte ore, la tua idea di Clean Project ha funzionato, grazie ancora.
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'
}

Rendi le tue dipendenze come sopra nel file build.gradle, ha funzionato per me.


2

nel mio caso l'ho risolto ponendolo compile 'com.android.support:recyclerview-v7:22.0.0'come dipendenza nella mia build gradle

(con Android Studio v. 1.2.1.1 e tutti gli SDK aggiornati.)

È davvero fastidioso quando i codici vengono aggiornati così velocemente e l'IDE non può tenerne traccia e devi correggerli manualmente, sprecando tempo e risorse.

Ma alla fine funziona.


2

includere la dipendenza in build.gradlee sincronizzare il progetto con i gradlefile

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

Includere la revisione (qui la sua 25.1.1) per evitare build imprevedibili, controllare le revisioni della libreria


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

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

Sopra funziona per me in build.gradlefile


1

Ho usato un piccolo trucco per utilizzare RecyclerView su dispositivi meno recenti. Sono appena entrato nel mio repository m2 locale e ho preso i file sorgente di RecyclerView e li ho inseriti nel mio progetto.

Puoi trovare il codice sorgente qui:

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


1

Altre risposte non hanno funzionato per me. Ho dovuto aggiungere questa riga:

compila "com.android.support:recyclerview-v7:21.0.0"


1

-Vai al PROGETTAZIONE parte activity_main.xml -In calo trascinamento pallet selezionare appCompactivity -In appCompactivity Selezionare RecyclerView -Su Selezione una finestra comparirà cliccare su OK -Il tuo progetto app: Gradle otterrà automaticamente aggiornato


1

Le mie dipendenze;

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

Ho aggiunto solo compile "com.android.support:recyclerview-v7:25.1.0" . La cosa importante è aggiungere la dipendenza RecycleView che è la stessa versione di appcompat


1

Se utilizzi la versione aggiornata o 2018 per Android Studio ...

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

ti darà un errore con il seguente messaggio "La configurazione 'compile' è obsoleta ed è stata sostituita con 'implementazione' e 'api'. Sarà rimossa alla fine del 2018."

Prova a usarlo

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

1

Ho usato questo funziona per me. Una cosa deve essere considerata quale appcompatversione stai utilizzando. Sto usando appcompat-v7:26.+quindi questo funziona per me.

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

0

Un ottimo modo per importare RecyclerView nel tuo progetto è RecyclerViewLib . Questa è una libreria open source che ha estratto RecyclerView per renderlo sicuro e facile da implementare. Puoi leggere il post sul blog dell'autore qui .

Aggiungi la seguente riga come dipendenza gradle nel tuo codice:

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

Maggiori informazioni su come introdurre dipendenze gradle:

Bosnia hai ragione sul fatto che sia fastidioso. Gradle può sembrare complicato ma è estremamente potente e flessibile. Tutto è fatto nella lingua alla moda e imparare il sistema gradle significa imparare un'altra lingua solo per poter creare la tua app Android. Adesso fa male, ma a lungo andare lo amerai.

Controlla il build.gradle per la stessa app. https://github.com/twotoasters/RecyclerViewLib/blob/master/sample/build.gradle Dove fa quanto segue è dove porta la lib nel modulo (ovvero l'app di esempio)

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

Presta attenzione alla posizione di questo file. Questo non è il build.gradle di primo livello

Poiché il sorgente lib è nello stesso progetto, è in grado di farlo con il semplice file ':library'. La excludedice la lib di utilizzare il supporto v4 dell'app campione. Non è necessario ma è una buona idea. Non hai o vuoi avere il sorgente della libreria nel tuo progetto, quindi devi puntare a Internet per questo. Nel build.gradle del tuo modulo / app dovresti inserire quella riga dall'inizio di questa risposta nella stessa posizione. O, se seguendo l'esempio dei campioni, si potrebbe sostituire ':library'con ' com.twotoasters.RecyclerViewLib:library:1.0.+@aar 'e utilizzare le esclude.


ho ricevuto questo errore:: Could not find any version that matches com.twotoasters.RecyclerViewLib:library:1.0.+- /
Besnik

Lo stai mettendo nel posto giusto nel tuo build.gradle? Lo stai inserendo nei tuoi moduli build.gradle?
MinceMan

dov'è il posto "giusto"? Ho appena aggiunto queste righe al mio build.gradle, l'ho posizionato fuori / dentro da Android {}, dentro / fuori da buildscript {} ma niente ha funzionato per me. sono nuovo a gradle e sembra essere molto complicato ... e quando leggo qualcosa come "metti questa riga ..." è molto fastidioso ... :-(
Besnik

1
@Besnik Ho aggiornato la mia risposta con ulteriori informazioni sul sistema di creazione dei voti. Spero che le informazioni siano utili.
MinceMan

grazie! Lo proverò nei prossimi giorni :-)
Besnik

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

In Android Studio, l'importazione non è così intuitiva come ci si aspetterebbe. Prova a importare questo bit e vedi come aiuta!


La domanda riguardava la dipendenza Gradle, non l'importazione di Java.
OneCricketeer

0

Se qualcuno ha ancora questo problema, non devi cambiare compileSdkVersion , questo vanifica l'intero scopo delle librerie di supporto.

Invece, usa questi nel tuo gradle.buildfile:

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

1
Non è consigliabile utilizzare la notazione +, almeno specificare la versione principale.
Dejan

0

Questo funziona per me

Definisci l'autorizzazione a Internet

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

Aggiungi dipendenza

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

Nell'attività 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();
            }
        });

    }
}

Crea una 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;
    }
}

Prepara 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;
    }
}

In 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

Solo un aggiornamento:

"compile" è obsoleto ora; è stato sostituito con "implementazione" e "api". Credo che verrà rimosso alla fine del 2018. Per ulteriori informazioni, vedere: http://d.android.com/r/tools/update-dependency-configurations.html

Inoltre, tutte le librerie com.android.support devono utilizzare la stessa identica specifica di versione; inoltre, le librerie di supporto come appcompat-v7 e recyclerview-v7 non dovrebbero utilizzare una versione diversa da compileSdkVersion.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.