Cómo importar RecyclerView para Android L-preview

90

Intentando usar el nuevo RecyclerView de la biblioteca de soporte. Descargué la actualización 20 para la biblioteca de soporte usando el administrador de SDK.

Agregué el archivo jar a la carpeta libs, y lo agregué a la ruta de compilación, no tuve suerte al usar RecyclerView.

Intenté usar también la dependencia de gradle de acuerdo con la API del desarrollador de Android ; no estoy seguro de si este es el lugar correcto para buscar; esta página está más relacionada con AndroidTV:

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

No se puede sincronizar Gradle con el proyecto.

¿Algunas ideas?

micnoy
fuente

Respuestas:

82

He creado usando las siguientes líneas y esto funciona para mí.

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

Para AndroidX

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

Para obtener un tutorial completo, consulte aquí

Gunaseelan
fuente
Error: la ejecución falló para la tarea ': app: dexDebug'. > com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command' / usr / lib / jvm / java-7-openjdk-amd64 / bin / java '' terminado con non -Cero valor de salida 2. Recibo este error cuando ejecuto el proyecto cuando agrego la segunda dependencia en mi proyecto. por favor, arréglalo a alguien ??.
Ajay Bhayani
El gradle.build de mi aplicación ya ha compilado 'com.android.support:appcompat-v7:23.2.1'. Así que intenté agregar compilar 'com.android.support:recyclerview-v7:23.2.1' - la misma versión con appcompat, pero la sincronización de Gradle falló, intenté cambiar a "+" como 'com.android.support: recyclerview-v7: 23.2. + ', falló también :(
Andiana
164

Lo averigué.

Tendrá que agregar la siguiente dependencia de gradle:

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

otro problema que tuve compilando fue el compileSdkVersion. Aparentemente tendrás que compilarlo contraandroid-L

Su archivo build.gradle debería verse así:

apply plugin: 'android'
android {
    compileSdkVersion 'android-L'
    buildToolsVersion '19.1.0'
    [...]
}
dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:recyclerview-v7:+'
}
micnoy
fuente
2
compileSdkVersion 'android-L' - da INSTALL_FAILED_OLDER_SDK
Oleksii Malovanyi
4
¿Cómo lo haces con Eclipse?
desarrollador de Android
2
esta publicación de reddit me llevó un poco más lejos después de recibir el error INSTALL_FAILED_OLDER_SDK.
Oren
7
¿Por qué una biblioteca de soporte dependería de la última versión de Android? Eso anula todo el propósito de tener una biblioteca de apoyo.
Christopher Perry
2
Si desea compilar con una versión anterior de Android, puede hacerlo. Para deshacerse del error INSTALL_FAILED_OLDER_SDK, debe reemplazar su <uses-sdk />declaración en su archivo AndroidManifest.xml con:<uses-sdk tools:node="replace" />
Christopher Perry
9

Esto funciona para mi:

compile 'com.android.support:recyclerview-v7:21.0.0-rc1'
Andras K
fuente
1
ese no es el problema, lo que ha escrito es solo otra versión de lo que él ya ha incluido
AlleyOOP
4

Si ha compilado la versión 22.2.0 del SDK, agregue la siguiente dependencia para la vista del reciclador y cardview adicional para admitir cardView

// para incluir toda la biblioteca en el directorio lib
compile fileTree(include: ['*.jar'], dir: 'libs')
// para soporte appcompat
compile 'com.android.support:appcompat-v7:22.2.0'
// para incluir el diseño de soporte de Google (hace posible implementar el tema de material design desde 2.3 y superior)
`compile 'com.android.support:design:22.2. 0 '

para agregar la vista de reciclador, use la siguiente dependencia
compile 'com.android.support:recyclerview-v7:22.2.0'


Después de eso, haga clic en Build-> rebuild project y ya está.

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

Esto funciona para mi. Intentalo.

Dino soleado
fuente
2

A los pasos que tengo ante mí solo les falta un paso.

Después de modificar build.gradle (Módulo: aplicación) y agregar las siguientes dependencias:

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

(Agregue la vista de tarjeta si es necesario)

Luego debe ir a Construir> Proyecto Limpio para deshacerse de cualquier error

LJ Hazel
fuente
Gracias, estuve luchando con el estudio de Android durante muchas horas, tu idea de Clean Project funcionó, gracias una vez más.
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'
}

Simplemente haga sus dependencias como arriba en el archivo build.gradle, funcionó para mí.

Yubaraj poudel
fuente
2

en mi caso, lo arreglé poniendo compile 'com.android.support:recyclerview-v7:22.0.0'como dependencia en mi compilación gradle

(con Android Studio v. 1.2.1.1 y todos los SDK actualizados).

Es realmente molesto cuando los códigos se actualizan tan rápido y el IDE no puede realizar un seguimiento de ellos, y tienes que corregirlos manualmente, lo que desperdicia tiempo y recursos.

Pero bueno, al fin funciona.

Samuele Bolognini
fuente
2

incluir la dependencia en build.gradley sincronizar el proyecto con los gradlearchivos

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

Incluya la revisión (aquí su 25.1.1) para evitar compilaciones impredecibles, verifique las revisiones de la biblioteca

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

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

Arriba funciona para mí en el build.gradlearchivo

Vaibhav Thakur
fuente
1

Usé un pequeño truco para usar RecyclerView en dispositivos más antiguos. Entré en mi repositorio m2 local, recogí los archivos fuente de RecyclerView y los puse en mi proyecto.

Puede encontrar el código fuente aquí:

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

rekire
fuente
1

Otras respuestas no funcionaron para mí. Tuve que agregar esta línea:

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

Chad Bingham
fuente
1

-Vaya a la parte de DISEÑO en activity_main.xml -En la paleta de arrastrar y soltar, seleccione appCompactivity -En appCompactivity Seleccione RecyclerView -En la selección aparecerá un cuadro de diálogo, haga clic en Aceptar -La aplicación de su proyecto: gradle se actualizará automáticamente

Vishal Singh
fuente
1

Mis dependencias;

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

Solo agregué compilar 'com.android.support:recyclerview-v7:25.1.0' . Lo importante es agregar la dependencia RecycleView, que es la misma versión que appcompat

Günay Gültekin
fuente
1

Si utiliza la versión actualizada o 2018 para Android Studio ...

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

le dará un error con el siguiente mensaje "La configuración 'compilar' es obsoleta y ha sido reemplazada por 'implementación' y 'api'. Se eliminará a finales de 2018."

Intenta usar esto

implementation 'com.android.support:recyclerview-v7:+'
TwistenTiger
fuente
1

Usé este y me está funcionando. Una cosa debe tener en cuenta la appcompatversión que está utilizando. Estoy usando, appcompat-v7:26.+así que esto me está funcionando.

implementation 'com.android.support:recyclerview-v7:26.+'
Vicky Pramanik
fuente
0

Una excelente manera de importar RecyclerView a su proyecto es RecyclerViewLib . Esta es una biblioteca de código abierto que sacó RecyclerView para que sea segura y fácil de implementar. Puedes leer la publicación del blog del autor aquí. .

Agregue la siguiente línea como una dependencia de Gradle en su código:

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

Más información sobre cómo incorporar dependencias de Gradle:

Bosnia, tienes razón en que eso es molesto. Gradle puede parecer complicado pero es extremadamente poderoso y flexible. Todo se hace en el idioma maravilloso y aprender el sistema gradle es aprender otro idioma solo para que puedas crear tu aplicación de Android. Duele ahora, pero a la larga te encantará.

Consulte build.gradle para la misma aplicación. https://github.com/twotoasters/RecyclerViewLib/blob/master/sample/build.gradle Donde hace lo siguiente es donde trae la biblioteca al módulo (también conocida como la aplicación de muestra)

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

Preste atención a la ubicación de este archivo. Esta no es la build.gradle de nivel superior

Debido a que la fuente de lib está en el mismo proyecto, puede hacer esto con simple ':library'. Le excludedice a la biblioteca que use el soporte de la aplicación de muestra v4. Eso no es necesario, pero es una buena idea. No tienes ni quieres tener el código fuente de la biblioteca en tu proyecto, por lo que debes apuntar a Internet para ello. En build.gradle / app de su módulo, pondría esa línea desde el principio de esta respuesta en la misma ubicación. O, si las muestras siguiendo el ejemplo, podría reemplazar ':library'con ' com.twotoasters.RecyclerViewLib:library:1.0.+@aar 'y utilizar los excluye.

MinceMan
fuente
Recibí este error: Could not find any version that matches com.twotoasters.RecyclerViewLib:library:1.0.+- /
Besnik
¿Lo está colocando en el lugar correcto en su build.gradle? ¿Lo estás poniendo en tus módulos build.gradle?
MinceMan
¿Dónde está el lugar "correcto"? Acabo de agregar estas líneas a mi build.gradle, lo coloco afuera / adentro desde android {}, adentro / afuera desde buildscript {} pero nada funcionó para mí. Soy nuevo en Gradle y parece ser muy complicado ... y cuando leo algo como "solo pon esta línea ..." es muy molesto ... :-(
Besnik
1
@Besnik Actualicé mi respuesta con más información sobre el sistema de construcción de calificaciones. Espero que la información sea de ayuda.
MinceMan
¡gracias! Lo intentaré en los próximos días :-)
Besnik
0
import android.support.v7.widget.RecyclerView;

En Android Studio, la importación no es tan intuitiva como cabría esperar. ¡Intente importar este bit y vea cómo ayuda!

AlleyOOP
fuente
La pregunta era sobre la dependencia de Gradle, no sobre la importación de Java.
OneCricketeer
0

Si alguien todavía tiene este problema, no tiene que cambiar compileSdkVersion , esto simplemente anula todo el propósito de las bibliotecas de soporte.

En su lugar, utilícelos en su gradle.buildarchivo:

compile 'com.android.support:cardview-v7:+'
compile 'com.android.support:recyclerview-v7:+'
compile 'com.android.support:palette-v7:+'`
andrejbroncek
fuente
1
No se recomienda usar + notación, al menos especificar la versión principal.
Dejan
0

Esto funciona para mi

Definir el permiso de Internet

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

Agregar dependencia

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

En actividad principal

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();
            }
        });

    }
}

Hacer clase 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;
    }
}

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

En 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>
Sakshi Mehta
fuente
0

Solo una actualización:

'compilar' es obsoleto ahora; ha sido reemplazado por 'implementación' y 'api'. Se eliminará a finales de 2018, creo. Para más información, ver: http://d.android.com/r/tools/update-dependency-configurations.html

Además, todas las bibliotecas com.android.support deben utilizar exactamente la misma especificación de versión; Además, las bibliotecas de soporte como appcompat-v7 y recyclerview-v7 no deberían usar una versión diferente a compileSdkVersion.

Wasi
fuente