Как импортировать RecyclerView для Android L-превью


91

Попытка использовать новый RecyclerView из библиотеки поддержки. Я загрузил 20 обновлений для библиотеки поддержки с помощью диспетчера SDK.

Я добавил файл jar в папку libs - и добавил в путь сборки - не повезло с использованием RecyclerView.

Пытался использовать также зависимость gradle в соответствии с API разработчика Android - не уверен, что это подходящее место для поиска - эта страница больше связана с AndroidTV:

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

Не удается синхронизировать проект с помощью градиента.

Любые идеи?

Ответы:


84

Я создал, используя следующие строки, и это работает для меня.

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

Для AndroidX

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

Полный учебник см. Здесь


Ошибка: не удалось выполнить задачу ': app: dexDebug'. > com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: процесс 'команда' / usr / lib / jvm / java-7-openjdk-amd64 / bin / java 'завершен без -zero exit value 2. Я получаю эту ошибку при запуске проекта, когда я добавляю вторую зависимость в свой проект. почините пожалуйста кто нибудь ??.
Аджай Бхайани

Gradle.build моего приложения уже скомпилировал com.android.support:appcompat-v7:23.2.1. Поэтому я попытался добавить compile 'com.android.support:recyclerview-v7:23.2.1' - ту же версию с appcompat, но синхронизация gradle не удалась, попытался изменить на «+», например com.android.support: recyclerview-v7: 23.2. + ', тоже не удалось :(
Andiana 01

164

Догадаться.

Вам нужно будет добавить следующую зависимость Gradle:

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

другой проблемой, которую я скомпилировал, был файл compileSdkVersion. Видимо придется его компилировать противandroid-L

Ваш файл build.gradle должен выглядеть примерно так:

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' - выдает INSTALL_FAILED_OLDER_SDK
Алексей Малованый

4
Как вы это делаете с Eclipse?
разработчик Android

2
этот пост на Reddit продвинул меня немного дальше после получения ошибки INSTALL_FAILED_OLDER_SDK.
Oren

7
Почему библиотека поддержки должна зависеть от последней версии Android? Это сводит на нет всю цель наличия библиотеки поддержки.
Кристофер Перри,

2
Если вы хотите скомпилировать более старую версию Android, вы можете. Чтобы избавиться от ошибки INSTALL_FAILED_OLDER_SDK, вам необходимо заменить свое <uses-sdk />объявление в файле AndroidManifest.xml следующим текстом:<uses-sdk tools:node="replace" />
Christopher Perry,

9

Это работает для меня:

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

1
проблема не в этом, то, что вы написали, - это просто еще одна версия того, что он уже включил
AlleyOOP


4

Если у вас есть скомпилированный SDK версии 22.2.0, добавьте ниже зависимость для представления recycler и дополнительно cardview для поддержки cardView

// для включения всей библиотеки в каталог lib
compile fileTree(include: ['*.jar'], dir: 'libs')
// для поддержки appcompat
compile 'com.android.support:appcompat-v7:22.2.0'
// для включения поддержки дизайна Google (это позволяет реализовать тему материального дизайна начиная с 2.3 и выше)
`compile 'com.android.support:design:22.2. 0 '

для добавления представления ресайклера используйте следующую зависимость
compile 'com.android.support:recyclerview-v7:22.2.0'


После этого нажмите Build-> rebuild project, и все готово.



2

В шагах передо мной отсутствует всего один шаг.

После изменения build.gradle (Module: app) и добавления следующих зависимостей:

скомпилировать 'com.android.support:cardview-v7:21.0.+'
скомпилировать 'com.android.support:recyclerview-v7:21.0.+'

(При необходимости добавьте cardview)

Затем вы должны перейти в Build> Clean Project, чтобы избавиться от любых ошибок.


Слава богу, я много часов боролся со студией Android, ваша идея Clean Project сработала, еще раз спасибо.
Дилджит

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

Просто сделайте ваши зависимости, как указано выше, в файле build.gradle, сработали для меня.


2

в моем случае я исправил это, поставив compile 'com.android.support:recyclerview-v7:22.0.0'в качестве зависимости в мою сборку gradle

(с Android Studio v. 1.2.1.1 и всеми обновленными SDK.)

Это действительно раздражает, когда коды обновляются так быстро, и IDE не может их отслеживать, и вам приходится вручную исправлять их, тратя время и ресурсы.

Но что ж, наконец-то это работает.


2

включить зависимость в build.gradleи синхронизировать проект с gradleфайлами

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

Включите ревизию (здесь ее 25.1.1), чтобы избежать непредсказуемых сборок, проверьте версии библиотеки


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

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

Выше работает у меня в build.gradleфайле


1

Я использовал небольшой прием, чтобы использовать RecyclerView на старых устройствах. Я просто зашел в свой локальный репозиторий m2, взял исходные файлы RecyclerView и поместил их в свой проект.

Вы можете найти исходный код здесь:

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


1

Другие ответы не помогли мне. Мне пришлось добавить эту строку:

скомпилировать com.android.support:recyclerview-v7:21.0.0


1

-Перейдите к части ДИЗАЙН в activity_main.xml -В палитре перетаскивания выберите appCompactivityappCompactivity выберите RecyclerView -При выборе появится диалоговое окно, нажмите OK -Ваше приложение проекта: gradle будет обновляться автоматически


1

Мои зависимости;

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

Я добавил только скомпилировать com.android.support:recyclerview-v7:25.1.0 . Важно добавить зависимость RecycleView, которая имеет ту же версию, что и appcompat.


1

Если вы используете обновленную версию или версию 2018 для Android Studio ...

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

выдаст сообщение об ошибке: «Конфигурация 'compile' устарела и была заменена на 'implementation' и 'api'. Она будет удалена в конце 2018 года.

Попробуйте использовать это

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

1

Я использовал этот, у меня работает. Следует учитывать одну вещь: какую appcompatверсию вы используете. Я использую, appcompat-v7:26.+так что это работает для меня.

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

0

Отличный способ импортировать RecyclerView в ваш проект - это RecyclerViewLib . Это библиотека с открытым исходным кодом, которая вытащила RecyclerView, чтобы сделать ее безопасной и простой. Вы можете прочитать запись в блоге автора здесь .

Добавьте следующую строку в качестве зависимости Gradle в свой код:

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

Дополнительная информация о том, как ввести зависимости Gradle:

Босния, ты прав в том, что тебя это раздражает. Gradle может показаться сложным, но он чрезвычайно мощный и гибкий. Все делается на отличном языке, и изучение системы Gradle - это изучение другого языка, чтобы вы могли создать свое приложение для Android. Сейчас больно, но со временем тебе это понравится.

Посмотрите build.gradle для того же приложения. https://github.com/twotoasters/RecyclerViewLib/blob/master/sample/build.gradle Где он делает следующее, это то, где он переносит lib в модуль (также известный как пример приложения)

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

Обратите внимание на расположение этого файла. Это не build.gradle верхнего уровня

Поскольку исходный код lib находится в том же проекте, это можно сделать с помощью файла simple ':library'. Библиотека excludeсообщает библиотеке использовать поддержку v4. В этом нет необходимости, но это хорошая идея. У вас нет или вы хотите иметь исходный код библиотеки в своем проекте, поэтому вам нужно указать для этого в Интернете. В build.gradle вашего модуля / приложения вы поместите эту строку из начала этого ответа в то же место. Или, если , следуя примеру образцов, можно заменить ':library'с ' com.twotoasters.RecyclerViewLib:library:1.0.+@aar 'и использовать исключает.


я получил эту ошибку:: Could not find any version that matches com.twotoasters.RecyclerViewLib:library:1.0.+- /
Besnik

Вы помещаете его в нужное место в build.gradle? Вы помещаете его в свои модули build.gradle?
MinceMan

где «правильное» место? Я просто добавил эти строки в свой build.gradle, поместил их снаружи / внутри из android {}, внутри / снаружи из buildscript {}, но у меня ничего не сработало. Я новичок в gradle, и это кажется очень сложным ... и когда я читаю что-то вроде «просто поставь эту строку ...», это очень раздражает ... :-(
Бесник

1
@Besnik Я обновил свой ответ, добавив больше информации о системе построения оценок. Я надеюсь, что эта информация окажется полезной.
MinceMan

Спасибо! я попробую в ближайшие дни :-)
Бесник

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

В Android Studio импорт не такой интуитивно понятный, как хотелось бы. Попробуйте импортировать этот бит и посмотрите, как он поможет!


Вопрос касался зависимости Gradle, а не импорта Java.
OneCricketeer

0

Если у кого-то все еще есть эта проблема - вам не нужно ничего менять compileSdkVersion, это просто сводит на нет всю цель поддержки библиотек.

Вместо этого используйте их в своем gradle.buildфайле:

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

1
Не рекомендуется использовать нотацию +, по крайней мере, указать основную версию.
Деян

0

Это работает для меня

Определить разрешение в Интернете

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

Добавить зависимость

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

В основной деятельности

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

    }
}

Сделайте класс 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;
    }
}

Сделать 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;
    }
}

В 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

Просто обновление:

'compile' теперь устарело; он был заменен на «реализация» и «api». Думаю, он будет удален в конце 2018 года. Для получения дополнительной информации см .: http://d.android.com/r/tools/update-dependency-configurations.html.

Также все библиотеки com.android.support должны использовать одну и ту же спецификацию версии; кроме того, вспомогательные библиотеки, такие как appcompat-v7 и recyclerview-v7, не должны использовать версию, отличную от compileSdkVersion.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.