Como importar o RecyclerView para Android L-preview

90

Tentando usar o novo RecyclerView da biblioteca de suporte. Eu baixei a atualização 20 para a biblioteca de suporte usando o gerenciador de SDK.

Eu adicionei o arquivo jar à pasta libs - e adicionei ao caminho de construção - sem sorte usando o RecyclerView.

Tentei usar também a dependência do gradle de acordo com a API do desenvolvedor Android - não tenho certeza se este é o lugar certo para procurar - esta página está mais relacionada ao AndroidTV:

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

Não é possível gradle sincronizar o projeto.

Alguma ideia?

Micnoy
fonte

Respostas:

82

Eu criei usando as seguintes linhas e isso funciona para mim.

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 o tutorial completo, consulte aqui

Gunaseelan
fonte
Erro: a execução falhou para a tarefa ': 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 com não -zero exit value 2 .Eu recebo este erro quando executo o projeto quando adiciono a 2ª dependência no meu projeto. por favor, conserte qualquer um ??.
Ajay Bhayani
O gradle.build do meu aplicativo já compilou 'com.android.support:appcompat-v7:23.2.1'. Então tentei adicionar compilar 'com.android.support:recyclerview-v7:23.2.1' - a mesma versão com appcompat, mas a sincronização do gradle falhou, tentei mudar para "+" como 'com.android.support: recyclerview-v7: 23.2. + ', também falhou :(
Andiana
164

Descobri isso.

Você terá que adicionar a seguinte dependência do Gradle:

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

outro problema que tive ao compilar foi o compileSdkVersion. Aparentemente, você terá que compilá-lo contraandroid-L

Seu arquivo build.gradle deve ser semelhante a este:

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
fonte
2
compileSdkVersion 'android-L' - dá INSTALL_FAILED_OLDER_SDK
Oleksii Malovanyi
4
Como você faz isso com o Eclipse?
desenvolvedor Android de
2
este post do reddit me ajudou um pouco mais longe depois de obter o erro INSTALL_FAILED_OLDER_SDK.
Oren
7
Por que uma biblioteca de suporte depende da versão mais recente do Android? Isso anula todo o propósito de ter uma biblioteca de suporte.
Christopher Perry
2
Se você deseja compilar com uma versão mais antiga do Android, pode. Para se livrar do erro INSTALL_FAILED_OLDER_SDK, você precisa substituir sua <uses-sdk />declaração no arquivo AndroidManifest.xml por:<uses-sdk tools:node="replace" />
Christopher Perry
9

Isso funciona para mim:

compile 'com.android.support:recyclerview-v7:21.0.0-rc1'
Andras K
fonte
1
esse não é o problema, o que você escreveu é apenas outra versão do que ele já incluiu
AlleyOOP
7

RecyclerView agora pode ser adicionado compilando a dependência de design no app gradle:

dependencies {
...
compile 'com.android.support:design:24.0.0'
}
Bryon Nicoson
fonte
1
para aqueles que votaram negativamente em github.com/android/platform_frameworks_support/blob/master/… aqui você pode ver
Lubos Mudrak
4

Se você tiver compilado o SDK versão 22.2.0, adicione a dependência abaixo para visualização do reciclador e visualização do cartão adicional para suporte do cardView

// por incluir toda a libarary no diretório lib
compile fileTree(include: ['*.jar'], dir: 'libs')
// para support appcompat
compile 'com.android.support:appcompat-v7:22.2.0'
// por incluir google support design (torna possível implementar o tema de design de material 2.3 e superior)
`compile 'com.android.support:design:22.2. 0 '

para adicionar a visualização recicladora, use a seguinte dependência
compile 'com.android.support:recyclerview-v7:22.2.0'


Depois disso, clique em Build-> rebuild project e pronto.

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

Isso funciona para mim. Tente.

Dino Sunny
fonte
2

As etapas diante de mim estão faltando apenas uma etapa.

Depois de alterar o build.gradle (Módulo: app) e adicionar as seguintes dependências:

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

(Adicione cardview se necessário)

Você deve então ir para Build> Clean Project para se livrar de quaisquer erros

LJ Hazel
fonte
Obrigado, cara, eu estava lutando com o Android Studio por muitas horas, sua ideia Clean Project deu certo. Obrigado mais uma vez.
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'
}

Basta fazer suas dependências como acima no arquivo build.gradle, funcionou para mim.

yubaraj poudel
fonte
2

no meu caso eu compile 'com.android.support:recyclerview-v7:22.0.0'consertei colocando como uma dependência na minha compilação do Gradle

(com Android Studio v. 1.2.1.1 e todos os SDKs atualizados.)

É realmente irritante quando os códigos são atualizados tão rapidamente e o IDE não consegue controlá-los e você tem que corrigi-los manualmente, desperdiçando tempo e recursos.

Mas bem, finalmente funciona.

Samuele Bolognini
fonte
2

incluir a dependência no build.gradlee sincronizar o projeto com os gradlearquivos

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

Inclua a revisão (aqui é 25.1.1) para evitar compilações imprevisíveis, verifique as revisões da biblioteca

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

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

Acima funciona para mim no build.gradlearquivo

Vaibhav Thakur
fonte
1

Usei um pequeno hack para usar o RecyclerView em dispositivos mais antigos. Eu apenas entrei em meu repositório local m2 e peguei os arquivos de origem do RecyclerView e os coloquei em meu projeto.

Você pode encontrar o código-fonte aqui:

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

rekire
fonte
1

Outras respostas não funcionaram para mim. Tive que adicionar esta linha:

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

Chad Bingham
fonte
1

- Vá para a parte DESIGN em activity_main.xml - No palete de arrastar e soltar, selecione appCompactivity - Em appCompactivity Selecione RecyclerView - Na seleção, uma caixa de diálogo deve aparecer, clique em OK - Seu aplicativo de projeto: gradle será atualizado automaticamente

Vishal Singh
fonte
1

Minhas dependências;

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

Eu adicionei apenas compilar 'com.android.support:recyclerview-v7:25.1.0' . O importante é adicionar RecycleView dependência que é como a mesma versão como appcompat

Günay Gültekin
fonte
1

Se você estiver usando a versão atualizada ou 2018 do Android Studio ...

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

apresentará um erro com a seguinte mensagem "A configuração 'compilar' está obsoleta e foi substituída por 'implementação' e 'api'. Ela será removida no final de 2018."

Tente usar isto

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

Eu usei este está funcionando para mim. Uma coisa precisa ser considerada qual appcompatversão você está usando. Estou usando, appcompat-v7:26.+então isso está funcionando para mim.

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

Uma ótima maneira de importar o RecyclerView para o seu projeto é o RecyclerViewLib . Esta é uma biblioteca de código aberto que retirou o RecyclerView para torná-lo seguro e fácil de implementar. Você pode ler a postagem do blog do autor aqui .

Adicione a seguinte linha como uma dependência do Gradle em seu código:

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

Mais informações sobre como trazer dependências do Gradle:

Bósnia, você está certo sobre isso ser irritante. O Gradle pode parecer complicado, mas é extremamente poderoso e flexível. Tudo é feito na linguagem groovy e aprender o sistema gradle é aprender outro idioma apenas para que você possa construir seu aplicativo Android. Dói agora, mas a longo prazo você vai adorar.

Verifique o build.gradle para o mesmo aplicativo. https://github.com/twotoasters/RecyclerViewLib/blob/master/sample/build.gradle Onde faz o seguinte é onde traz a lib para o módulo (também conhecido como aplicativo de amostra)

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

Preste atenção na localização deste arquivo. Este não é o build.gradle de nível superior

Como o código-fonte da lib está no mesmo projeto, é possível fazer isso com o simples ':library'. O excludeinstrui a biblioteca a usar o suporte v4 do aplicativo de amostra. Isso não é necessário, mas é uma boa ideia. Você não tem ou deseja ter o código-fonte da biblioteca em seu projeto, então você deve apontar para a internet para isso. No build.gradle do seu módulo / app, você colocaria a linha do início desta resposta no mesmo local. Ou, se seguindo o exemplo amostras, você poderia substituir ':library'com ' com.twotoasters.RecyclerViewLib:library:1.0.+@aar 'e usar as exclui.

MinceMan
fonte
recebi este erro:: Could not find any version that matches com.twotoasters.RecyclerViewLib:library:1.0.+- /
Besnik
Você está colocando-o no lugar certo em seu build.gradle? Você está colocando isso em seus módulos build.gradle?
MinceMan
onde é o lugar "certo"? Acabei de anexar essas linhas ao meu build.gradle, coloque-o fora / dentro do android {}, dentro / fora do buildscript {}, mas nada funcionou para mim. Sou novo no gradle e parece ser muito complicado ... e quando leio algo como "basta colocar esta linha ..." é muito chato ... :-(
Besnik
1
@Besnik Eu atualizei minha resposta com mais informações sobre o sistema de construção de notas. Espero que essa informação seja útil.
MinceMan
obrigado! Vou tentar nos próximos dias :-)
Besnik
0
import android.support.v7.widget.RecyclerView;

No Android Studio, a importação não é tão intuitiva quanto seria de se esperar. Tente importar este bit e veja como isso ajuda!

AlleyOOP
fonte
A questão era sobre a dependência do Gradle, não a importação do Java.
OneCricketeer
0

Se alguém ainda tiver esse problema - você não precisa mudar compileSdkVersion, isso simplesmente anula todo o propósito das bibliotecas de suporte.

Em vez disso, use-os em seu gradle.buildarquivo:

compile 'com.android.support:cardview-v7:+'
compile 'com.android.support:recyclerview-v7:+'
compile 'com.android.support:palette-v7:+'`
andrejbroncek
fonte
1
Não é recomendado usar a notação +, pelo menos especifique a versão principal.
Dejan
0

Isso funciona para mim

Definir permissão de internet

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

Adicionar dependência

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

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

    }
}

Faça a 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;
    }
}

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

Em 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
fonte
0

Apenas uma atualização:

'compilar' está obsoleto agora; ele foi substituído por 'implementação' e 'api'. Ele será removido no final de 2018, eu acredito. Para obter mais informações, consulte: http://d.android.com/r/tools/update-dependency-configurations.html

Além disso, todas as bibliotecas com.android.support devem usar exatamente a mesma especificação de versão; além disso, as bibliotecas de suporte, como appcompat-v7 e recyclerview-v7, não devem usar uma versão diferente da compileSdkVersion.

Wasi
fonte