Android L- 미리보기 용 RecyclerView를 가져 오는 방법


90

지원 라이브러리에서 새 RecyclerView를 사용하려고합니다. SDK 관리자를 사용하여 지원 라이브러리 용 20 업데이트를 다운로드했습니다.

jar 파일을 libs 폴더에 추가하고 빌드 경로에 추가했습니다. RecyclerView를 사용하면 운이 없습니다.

Android 개발자의 API 에 따라 gradle 종속성도 사용하려고 시도 했습니다. 이것이 올바른 위치인지 확실하지 않습니다.이 페이지는 AndroidTV와 더 관련이 있습니다.

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

프로젝트를 gradle 동기화 할 수 없습니다.

어떤 아이디어?

답변:


82

나는 다음 줄을 사용하여 만들었으며 이것은 나를 위해 작동합니다.

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 : Process 'command'/ usr / lib / jvm / java-7-openjdk-amd64 / bin / java ''완료 -zero exit value 2. 프로젝트에 두 번째 종속성을 추가 할 때 프로젝트를 실행할 때이 오류가 발생합니다. 제발, 그것을 고치십시오 ??.
아제 Bhayani

내 앱의 gradle.build는 이미 'com.android.support:appcompat-v7:23.2.1'을 컴파일했습니다. 그래서 appcompat와 동일한 버전 인 'com.android.support:recyclerview-v7:23.2.1'컴파일을 추가하려고했지만 gradle 동기화가 실패하여 'com.android.support'와 같이 "+"로 변경하려고했습니다. . recyclerview-V7 : 23.2 + ', :( 너무 실패
Andiana

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 '안드로이드-L'- INSTALL_FAILED_OLDER_SDK 제공
Oleksii Malovanyi

4
Eclipse로 어떻게 수행합니까?
안드로이드 개발자

2
이 reddit 게시물 은 INSTALL_FAILED_OLDER_SDK 오류가 발생한 후 조금 더 나아졌습니다.
Oren

7
지원 라이브러리가 최신 버전의 Android에 의존하는 이유는 무엇입니까? 이는 지원 라이브러리를 갖는 전체 목적을 무효화합니다.
Christopher Perry

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

Compiled 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 프로젝트를 클릭하면 완료됩니다.


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

이것은 나를 위해 작동합니다. 시도 해봐.


2

내 앞의 단계는 한 단계 빠졌습니다.

변경 후 build.gradle를 다음 종속성을 (응용 프로그램 모듈) 및 추가 :

컴파일 'com.android.support:cardview-v7:21.0.+'
컴파일 'com.android.support:recyclerview-v7:21.0.+'

(필요한 경우 카드 뷰 추가)

그런 다음 빌드> 프로젝트 정리 로 이동하여 오류를 제거해야합니다.


고마워요, 저는 여러 시간 동안 안드로이드 스튜디오로 고생하고 있었는데, 당신의 Clean Project 아이디어가 일을 해냈습니다. 다시 한번 감사드립니다.
Diljeet 2011 년

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 스튜디오 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 선택 팔레트 드래그 드롭 -In appCompactivity -In appCompactivity 선택 RecyclerView -On 선택을 클릭하여 표시하여야한다 대화 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

Android Studio 용 업데이트 또는 2018 버전을 사용하는 경우 ...

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

"구성 '컴파일'이 더 이상 사용되지 않으며 '구현'및 '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 소스가 동일한 프로젝트에 있기 때문에 간단한 ':library'. 는 exclude샘플 응용 프로그램의 지원 v4를 사용하는 lib 디렉토리를 알려줍니다. 필수는 아니지만 좋은 생각입니다. 프로젝트에 lib의 소스가 없거나 원하지 않으므로 인터넷을 가리켜 야합니다. 모듈 / 앱의 build.gradle에서이 답변의 시작 부분에서 해당 줄을 동일한 위치에 넣습니다. 샘플 예제를 다음과 같은 경우 또는, 당신은 대체 할 수 ':library'와 함께 ' com.twotoasters.RecyclerViewLib:library:1.0.+@aar '하고 제외를 사용합니다.


이 오류가 발생했습니다 : Could not find any version that matches com.twotoasters.RecyclerViewLib:library:1.0.+:-/
Besnik 2014 년

build.gradle의 올바른 위치에 배치하고 있습니까? 모듈 build.gradle에 넣습니까?
MinceMan 2014 년

"올바른"장소는 어디입니까? 이 줄을 내 build.gradle에 추가하고 android {} 외부 / 내부, buildscript {} 내부 / 외부에 배치했지만 아무것도 작동하지 않았습니다. 나는 Gradle을 위해 새로 온 사람과 매우 overcomplicated 것 같다 ... 그리고 내가 좋아하는 뭔가를 읽을 때 매우 성가신 "그냥 ...이 줄을 넣어"... :-(
Besnik

1
@Besnik 성적 빌드 시스템에 대한 자세한 정보로 답변을 업데이트했습니다. 정보가 도움이되기를 바랍니다.
MinceMan 2014 년

감사합니다! 내가 :-) 다음 일에 그것을 시도를 줄 것이다
Besnik에게

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

Android Studio에서 가져 오기는 생각만큼 직관적이지 않습니다. 이 비트를 가져 와서 어떻게 도움이되는지 확인하십시오!


문제는 Java 가져 오기가 아니라 Gradle 종속성에 관한 것입니다.
OneCricketeer

0

여전히이 문제가있는 사람은 변경할 필요가 없습니다. compileSdkVersion . 이는 지원 라이브러리의 전체 목적을 무효화 할뿐입니다.

대신 gradle.build파일 에서 다음을 사용 하십시오.

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

1
+ 표기법을 사용하지 않는 것이 좋습니다. 최소한 기본 버전을 지정하십시오.
Dejan

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

업데이트 :

'컴파일'은 이제 쓸모가 없습니다. '구현'과 'api'로 대체되었습니다. 2018 년 말에 제거 될 것입니다. 자세한 내용은 http://d.android.com/r/tools/update-dependency-configurations.html을 참조하십시오.

또한 모든 com.android.support 라이브러리는 정확히 동일한 버전 사양을 사용해야합니다. 또한 appcompat-v7 및 recyclerview-v7과 같은 지원 라이브러리는 compileSdkVersion과 다른 버전을 사용해서는 안됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.