RecyclerView for Android L-önizlemesi nasıl içe aktarılır


91

Destek kitaplığından yeni RecyclerView kullanmaya çalışıyorum. Destek kitaplığı için 20 güncellemesini SDK yöneticisini kullanarak indirdim.

Jar dosyasını libs klasörüne ekledim - ve yol oluşturmaya ekledim - RecyclerView kullanarak şansım yok.

Android Geliştirici API'sine göre gradle bağımlılığını da kullanmaya çalıştım - buranın bakılacak doğru yer olup olmadığından emin değilim - bu sayfa AndroidTV ile daha fazla ilgilidir:

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

Projeye not verilemiyor.

Herhangi bir fikir?

Yanıtlar:


84

Aşağıdaki satırları kullanarak oluşturdum ve bu benim için çalışıyor.

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

AndroidX için

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

Tam eğitim için lütfen buraya bakın


Hata: ': app: dexDebug' görevi için yürütme başarısız oldu. > com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: İşlem 'command' / usr / lib / jvm / java-7-openjdk-amd64 / bin / java '' non -zero çıkış değeri 2. projeme 2. bağımlılık eklediğimde projeyi çalıştırdığımda bu hatayı alıyorum. lütfen herhangi birini düzeltin ??
Ajay Bhayani

Uygulamamın gradle.build dosyası zaten 'com.android.support:appcompat-v7:23.2.1' derlemesine sahip. Bu yüzden 'com.android.support:recyclerview-v7:23.2.1' derlemesini eklemeye çalıştım - appcompat ile aynı sürüm, ancak gradle senkronizasyonu başarısız oldu, 'com.android.support gibi "+" olarak değiştirmeye çalıştım: recyclerview-v7: 23.2. + ', de başarısız oldu :(
Andiana

164

Anladım.

Aşağıdaki derecelendirme bağımlılığını eklemeniz gerekecek:

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

derlediğim bir diğer konu da compileSdkVersion. Görünüşe göre onu karşı derlemeniz gerekecekandroid-L

Build.gradle dosyanız şunun gibi görünmelidir:

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 verir
Oleksii Malovanyi

4
Eclipse ile bunu nasıl yaparsınız?
android geliştiricisi

2
Bu reddit gönderisi INSTALL_FAILED_OLDER_SDK hatasını aldıktan sonra beni biraz daha ileri götürdü.
Oren

7
Bir destek kitaplığı neden Android'in en son sürümüne bağlı olsun? Bu, bir destek kitaplığına sahip olma amacının tamamını ortadan kaldırır.
Christopher Perry

2
Eğer daha eski bir Android sürümüne karşı derleme yapmak istiyorsanız bunu yapabilirsiniz. INSTALL_FAILED_OLDER_SDK hatasından kurtulmak <uses-sdk />için AndroidManifest.xml dosyanızdaki bildiriminizi şu şekilde değiştirmeniz gerekir :<uses-sdk tools:node="replace" />
Christopher Perry

9

Bu benim için çalışıyor:

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

1
sorun bu değil, yazdıklarınız onun zaten
eklediklerinin

7

RecyclerView artık uygulama gradle'da tasarım bağımlılığı derlenerek eklenebilir:

dependencies {
...
compile 'com.android.support:design:24.0.0'
}

1
github.com/android/platform_frameworks_support/blob/master/… ' i olumsuz oylayanlar için burada görebilirsiniz
Lubos Mudrak

4

SDK Sürüm 22.2.0'ı Derlediyseniz, geri dönüşümcü görünümü için bağımlılığı ekleyin ve cardView desteği için kart görünümü eki

// dizindeki libarary tüm dahil olmak üzere lib
compile fileTree(include: ['*.jar'], dir: 'libs')
// AppCompat destek için
compile 'com.android.support:appcompat-v7:22.2.0'
// google destek tasarımını da dahil olmak üzere (bu 2.3 ve üstü göre önemli tasarım temasını uygulanması mümkün kılar)
`derleme 'com.android.support:design:22.2. 0 '

geri dönüşümcü görünümünü eklemek için aşağıdaki bağımlılığı kullanın
compile 'com.android.support:recyclerview-v7:22.2.0'


Bundan sonra Build-> rebuild projesine tıklayın ve bitirdiniz.


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

Bu benim için çalışıyor. Dene.


2

Önümdeki adımlarda sadece bir adım eksik.

Değişiklikler yapıldıktan sonra build.gradle aşağıdaki bağımlılıkları: (app Modülü) ve ekleme:

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

(Gerekirse kart görünümü ekleyin)

Daha sonra , herhangi bir hatadan kurtulmak için Oluştur> Temiz Proje'ye gitmelisiniz.


Teşekkürler dostum, saatlerce Android stüdyosuyla uğraşıyordum, Temiz Proje fikriniz bir şeyi yaptı, Tekrar teşekkürler.
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'
}

Sadece yukarıdaki gibi build.gradle dosyasında bağımlılıklarınızı yapın, benim için çalıştı.


2

benim durumumda bunu compile 'com.android.support:recyclerview-v7:22.0.0'gradle yapıma bağımlı olarak ekleyerek düzelttim

(Android studio v. 1.2.1.1 ve tüm SDK'lar güncellendi.)

Kodların bu kadar hızlı güncellenmesi ve IDE'nin bunları takip edememesi ve bunları manuel olarak düzeltmeniz, zaman ve kaynak israf etmeniz gerçekten can sıkıcı.

Ama nihayet işe yarıyor.


2

bağımlılığı dahil edin build.gradleve projeyi gradledosyalarla senkronize edin

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

Öngörülemeyen yapıları önlemek için revizyonu ekleyin (burada 25.1.1), kütüphane revizyonlarını kontrol edin


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

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

Yukarıdaki build.gradledosyada benim için çalışıyor


1

RecyclerView'ı eski cihazlarda kullanmak için küçük bir hack kullandım. Yerel m2 depoma girdim ve RecyclerView kaynak dosyalarını aldım ve projeme koydum.

Kaynak kodunu burada bulabilirsiniz:

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


1

Diğer cevaplar benim için işe yaramadı. Bu satırı eklemem gerekiyordu:

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


1

İçin -Git TASARIM kısmen activity_main.xml seçmek palet sürükle bırak -In appCompactivity -In appCompactivity Seç RecyclerView -On Seçimi tıklayın görünür olacaktır bir iletişim TAMAM -Senin proje uygulaması: gradle otomatik güncellenecektir


1

Bağımlılıklarım;

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

Yalnızca 'com.android.support:recyclerview-v7:25.1.0' derlemesini ekledim . Önemli olan gibidir RecycleView bağımlılık eklemektir aynı sürümü olarak AppCompat


1

Android Studio için güncellenmiş veya 2018 Sürümünü kullanıyorsanız ...

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

"Yapılandırma 'derleme' eski ve 'uygulama' ve 'api' ile değiştirildi. 2018'in sonunda kaldırılacaktır."

Bunu kullanmayı dene

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

1

Bu benim için çalışıyor kullandım. Hangi appcompatsürümü kullandığınızı düşünmeniz gereken bir şey var . Ben kullanıyorum, appcompat-v7:26.+bu benim için çalışıyor.

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

0

RecyclerView'ı projenize aktarmanın harika bir yolu RecyclerViewLib'dir . Bu, RecyclerView'ı güvenli ve kolay bir uygulama haline getirmek için çıkaran açık kaynaklı bir kitaplıktır. Yazarın blog gönderisini buradan okuyabilirsiniz .

Aşağıdaki satırı kodunuza gradle bağımlılığı olarak ekleyin:

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

Gradle bağımlılıklarının nasıl getirileceği hakkında daha fazla bilgi:

Bosna, sinir bozucu olduğu konusunda haklısın. Gradle karmaşık görünebilir ancak son derece güçlü ve esnektir. Her şey harika bir dilde yapılır ve gradle sistemini öğrenmek, sırf Android uygulamanızı oluşturabilmeniz için başka bir dil öğrenmektir. Şimdi acıyor ama uzun vadede onu seveceksin.

Aynı uygulama için build.gradle'a bakın. https://github.com/twotoasters/RecyclerViewLib/blob/master/sample/build.gradle Aşağıdakilerin yaptığı yer, lib'i modüle (diğer bir deyişle örnek uygulama) getirdiği yerdir

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

Bu dosyanın konumuna dikkat edin. Bu, en üst düzey build.gradle değildir

Kitaplık kaynağı aynı proje içinde olduğundan, bunu simple ile yapabilir ':library'. excludeNumune uygulamanın destek v4 kullanmak lib söyler. Bu gerekli değil ama iyi bir fikir. Projenizde kütüphanenin kaynağına sahip değilsiniz veya olmasını istemiyorsunuz, bu yüzden bunun için interneti göstermelisiniz. Modülünüzün / app'in build.gradle'ında, bu satırı bu cevabın başından itibaren aynı konuma koyarsınız. Veya örnekler örneğini takip ediyorsanız , dışlamaları ':library'ile değiştirebilir ' com.twotoasters.RecyclerViewLib:library:1.0.+@aar 've kullanabilirsiniz.


bu hatayı aldım Could not find any version that matches com.twotoasters.RecyclerViewLib:library:1.0.+: - /
Besnik

Build.gradle içinde doğru yere mi koyuyorsunuz? Build.gradle modüllerine mi yerleştiriyorsunuz?
MinceMan

"doğru" yer neresi? bu satırları build.gradle'ıma ekledim, android'den {} dışına / içine, buildscript'ten {} içine / dışına yerleştir ancak benim için hiçbir şey işe yaramadı. Mezun olmak için yeniyim ve çok karmaşık görünüyor ... ve "sadece bu satırı koyun ..." gibi bir şey okuduğumda çok sinir bozucu ... :-(
Besnik

1
@Besnik Cevabımı not oluşturma sistemi hakkında daha fazla bilgi ile güncelledim. Umarım bu bilgiler yardımcı olur.
MinceMan

teşekkür ederim! önümüzdeki günlerde bir deneyeceğim :-)
Besnik

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

Android Studio'da içe aktarma, umulduğu kadar sezgisel değildir. Bu biti içe aktarmayı deneyin ve nasıl yardımcı olduğunu görün!


Soru, Java içe aktarımı değil, Gradle bağımlılığıyla ilgiliydi.
OneCricketeer

0

Hala bu sorunu compileSdkVersionyaşayan biri varsa - değiştirmek zorunda değilsiniz , bu sadece destek kitaplıklarının tüm amacını geçersiz kılar.

Bunun yerine, gradle.builddosyanızda şunları kullanın :

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

1
+ Notasyonu kullanmanız tavsiye edilmez, en azından ana versiyonu belirtiniz.
Dejan

0

Bu benim için çalışıyor

İnternet iznini tanımlayın

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

Bağımlılık ekleyin

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

Ana Aktivitede

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 sınıfı yap

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 yap

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

<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

Sadece bir güncelleme:

'compile' artık kullanılmıyor; "uygulama" ve "api" ile değiştirildi. İnanıyorum ki 2018 sonunda kaldırılacaktır. Daha fazla bilgi için bkz: http://d.android.com/r/tools/update-dependency-configurations.html

Ayrıca tüm com.android.support kitaplıkları aynı sürüm belirtimini kullanmalıdır; ek olarak, appcompat-v7 ve recyclerview-v7 gibi destek kitaplıkları, compileSdkVersion'dan farklı bir sürüm kullanmamalıdır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.