Cara mengimpor RecyclerView untuk Android L-preview


91

Mencoba menggunakan RecyclerView baru dari pustaka dukungan. Saya mengunduh pembaruan 20 untuk pustaka dukungan menggunakan pengelola SDK.

Saya telah menambahkan file jar ke folder libs - dan menambahkan ke jalur build - tidak berhasil menggunakan RecyclerView.

Mencoba menggunakan juga ketergantungan gradle menurut Android Developer's API - tidak yakin apakah ini tempat yang tepat untuk melihat - halaman ini lebih terkait dengan AndroidTV:

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

Tidak dapat menyinkronkan proyek secara bertahap.

Ada ide?

Jawaban:


84

Saya telah membuat menggunakan baris berikut dan ini berfungsi untuk saya.

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

Untuk AndroidX

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

Untuk tutorial lengkapnya silahkan lihat disini


Kesalahan: Eksekusi gagal untuk tugas ': app: dexDebug'. > com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command' / usr / lib / jvm / java-7-openjdk-amd64 / bin / java '' selesai dengan non -Nol nilai keluar 2. Saya mendapatkan kesalahan ini ketika saya menjalankan proyek ketika saya menambahkan ketergantungan ke-2 dalam proyek saya. tolong, perbaiki salah satunya ??.
Ajay Bhayani

Gradle.build aplikasi saya sudah mengkompilasi 'com.android.support:appcompat-v7:23.2.1'. Jadi saya mencoba menambahkan compile 'com.android.support:recyclerview-v7:23.2.1' - versi yang sama dengan appcompat, tetapi sinkronisasi gradle gagal, mencoba mengubah ke "+" seperti 'com.android.support: recyclerview-v7: 23.2. + ', gagal juga :(
Andiana

164

Menemukannya.

Anda harus menambahkan dependensi gradle berikut:

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

Masalah lain yang telah saya kompilasi adalah compileSdkVersion. Rupanya Anda harus mengkompilasinyaandroid-L

File build.gradle Anda akan terlihat seperti ini:

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' - memberikan INSTALL_FAILED_OLDER_SDK
Oleksii Malovanyi

4
Bagaimana Anda melakukannya dengan Eclipse?
Pengembang android

2
posting reddit ini membawa saya sedikit lebih jauh setelah mendapatkan kesalahan INSTALL_FAILED_OLDER_SDK.
Oren

7
Mengapa pustaka dukungan bergantung pada versi terbaru Android? Itu mengalahkan seluruh tujuan memiliki pustaka pendukung.
Christopher Perry

2
Jika Anda ingin mengkompilasi dengan versi Android yang lebih lama, Anda bisa. Untuk menghilangkan kesalahan INSTALL_FAILED_OLDER_SDK Anda perlu mengganti <uses-sdk />deklarasi Anda di file AndroidManifest.xml dengan:<uses-sdk tools:node="replace" />
Christopher Perry

9

Ini bekerja untuk saya:

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

1
bukan itu masalahnya, apa yang Anda tulis hanyalah versi lain dari apa yang telah dia sertakan
AlleyOOP


4

Jika Anda memiliki SDK Terkompilasi Versi 22.2.0, tambahkan dependensi di bawah ini untuk tampilan pendaur ulang dan tampilan kartu tambahan untuk dukungan cardView

// untuk menyertakan semua pustaka dalam direktori lib
compile fileTree(include: ['*.jar'], dir: 'libs')
// untuk dukungan appcompat
compile 'com.android.support:appcompat-v7:22.2.0'
// untuk menyertakan desain dukungan google (ini memungkinkan penerapan tema desain material dari 2.3 dan yang lebih tinggi)
`compile 'com.android.support:design:22.2. 0 '

untuk menambahkan tampilan recycler, gunakan dependensi berikut
compile 'com.android.support:recyclerview-v7:22.2.0'


Setelah itu klik pada Build-> membangun kembali proyek dan Anda selesai.


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

Ini berhasil untuk saya. Cobalah.


2

Langkah-langkah di depan saya hanya melewatkan satu langkah.

Setelah mengubah build.gradle (Module: app) dan menambahkan dependensi berikut:

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

(Tambahkan cardview jika perlu)

Anda kemudian harus pergi ke Build> Clean Project untuk menyingkirkan kesalahan apa pun


Terima kasih kawan, saya berjuang dengan studio Android selama berjam-jam, ide Proyek Bersih Anda berhasil, Terima kasih sekali lagi.
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'
}

Buat saja dependensi Anda seperti di atas dalam file build.gradle, berfungsi untuk saya.


2

dalam kasus saya, saya memperbaikinya dengan menempatkan compile 'com.android.support:recyclerview-v7:22.0.0'sebagai ketergantungan ke dalam build gradle saya

(dengan Android studio v. 1.2.1.1 dan semua SDK diperbarui.)

Sangat menjengkelkan ketika kode diperbarui begitu cepat dan IDE tidak dapat melacaknya, dan Anda harus memperbaikinya secara manual, membuang-buang waktu dan sumber daya.

Tapi yah, akhirnya berhasil.


2

sertakan ketergantungan di build.gradle, dan sinkronkan proyek dengan gradlefile

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

Sertakan revisi (di sini 25.1.1) untuk menghindari build yang tidak dapat diprediksi, periksa revisi perpustakaan


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

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

Di atas berfungsi untuk saya dalam build.gradlefile


1

Saya menggunakan peretasan kecil untuk menggunakan RecyclerView di perangkat lama. Saya baru saja masuk ke repositori m2 lokal saya dan mengambil file sumber RecyclerView dan memasukkannya ke dalam proyek saya.

Anda dapat menemukan kode sumber di sini:

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


1

Jawaban lain tidak berhasil untuk saya. Saya harus menambahkan baris ini:

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


1

-Pergi ke bagian DESIGN di activity_main.xml -Dalam palet drag drop pilih appCompactivity -Dalam appCompactivity Pilih RecyclerView -Pada Pilihan dialog akan muncul klik OK -Aplikasi proyek Anda: gradle akan secara otomatis diperbarui


1

Ketergantungan saya;

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

Saya menambahkan hanya kompilasi 'com.android.support:recyclerview-v7:25.1.0' . Yang penting adalah menambahkan dependensi RecycleView yang versinya sama dengan appcompat


1

Jika Anda menggunakan Versi terbaru atau 2018 untuk Android Studio ...

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

akan memberi Anda kesalahan dengan pesan berikut "Konfigurasi 'kompilasi' sudah usang dan telah diganti dengan 'implementasi' dan 'api'. Ini akan dihapus pada akhir 2018."

Coba gunakan ini

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

1

Saya menggunakan yang satu ini bekerja untuk saya. Satu hal yang perlu diperhatikan adalah appcompatversi apa yang Anda gunakan. Saya menggunakan appcompat-v7:26.+jadi ini bekerja untuk saya.

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

0

Cara terbaik untuk mengimpor RecyclerView ke dalam proyek Anda adalah RecyclerViewLib . Ini adalah pustaka sumber terbuka yang mengeluarkan RecyclerView untuk membuatnya aman dan mudah diimplementasikan. Anda dapat membaca postingan blog penulis di sini .

Tambahkan baris berikut sebagai dependensi gradle di kode Anda:

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

Info selengkapnya tentang cara memasukkan dependensi gradle:

Bosnia, Anda benar tentang hal itu yang menyebalkan. Gradle mungkin tampak rumit tetapi sangat kuat dan fleksibel. Semuanya dilakukan dalam groovy bahasa dan mempelajari sistem gradle mempelajari bahasa lain agar Anda dapat membangun aplikasi Android Anda. Sakitnya sekarang, tapi dalam jangka panjang Anda akan menyukainya.

Lihat build.gradle untuk aplikasi yang sama. https://github.com/twotoasters/RecyclerViewLib/blob/master/sample/build.gradle Di mana ia melakukan hal berikut adalah di mana ia membawa lib ke dalam modul (alias aplikasi sampel)

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

Perhatikan lokasi file ini. Ini bukan build.gradle tingkat atas

Karena sumber lib ada dalam proyek yang sama, ia dapat melakukannya dengan sederhana ':library'. The excludemenceritakan lib untuk menggunakan dukungan v4 sampel aplikasi. Itu tidak perlu, tapi itu ide yang bagus. Anda tidak memiliki atau ingin memiliki sumber lib dalam proyek Anda, jadi Anda harus mengarahkan ke internet untuk itu. Dalam modul / app's build.gradle Anda, Anda akan meletakkan baris itu dari awal jawaban ini di lokasi yang sama. Atau, jika mengikuti contoh contoh, Anda dapat mengganti ':library'dengan ' com.twotoasters.RecyclerViewLib:library:1.0.+@aar 'dan menggunakan pengecualian.


saya mendapat kesalahan ini Could not find any version that matches com.twotoasters.RecyclerViewLib:library:1.0.+:: - /
Besnik

Apakah Anda meletakkannya di tempat yang tepat di build.gradle Anda? Apakah Anda meletakkannya di modul build.gradle Anda?
MinceMan

dimana tempat yang "benar"? saya baru saja menambahkan baris ini ke build.gradle saya, menempatkannya di luar / di dalam dari android {}, di dalam / di luar dari buildscript {} tetapi tidak ada yang berhasil untuk saya. saya baru mengenal gradle dan sepertinya terlalu rumit ... dan ketika saya membaca sesuatu seperti "letakkan baris ini ..." sangat menjengkelkan ... :-(
Besnik

1
@Besnik Saya memperbarui jawaban saya dengan lebih banyak informasi tentang sistem pembuatan kelas. Saya harap informasi itu bermanfaat.
MinceMan

Terima kasih! saya akan mencobanya di hari-hari berikutnya :-)
Besnik

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

Di Android Studio, mengimpor tidak seintuitif yang diharapkan. Coba impor bit ini dan lihat bagaimana itu membantu!


Pertanyaannya adalah tentang ketergantungan Gradle, bukan impor Java.
OneCricketeer

0

Jika masih ada yang mengalami masalah ini - Anda tidak perlu berubah compileSdkVersion , ini hanya akan mengalahkan seluruh tujuan pustaka dukungan.

Sebagai gantinya, gunakan ini di gradle.buildfile Anda :

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

1
Tidak disarankan menggunakan + notasi, setidaknya tentukan versi utama.
Dejan

0

Ini berhasil untuk saya

Tentukan izin internet

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

Tambahkan ketergantungan

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

Dalam Aktivitas Utama

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

    }
}

Buat kelas 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;
    }
}

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

Di 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

Hanya pembaruan:

'compile' sekarang sudah usang; itu telah diganti dengan 'implementasi' dan 'api'. Itu akan dihapus pada akhir 2018 saya yakin. Untuk informasi lebih lanjut lihat: http://d.android.com/r/tools/update-dependency-configurations.html

Selain itu, semua pustaka com.android.support harus menggunakan spesifikasi versi yang sama persis; Selain itu, pustaka dukungan seperti appcompat-v7 dan recyclerview-v7 tidak boleh menggunakan versi yang berbeda dari compileSdkVersion.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.