【问题标题】:How to import RecyclerView for Android L-preview如何导入 RecyclerView for Android L-preview
【发布时间】:2014-08-17 21:59:13
【问题描述】:

尝试使用支持库中的新 RecyclerView。我使用 SDK 管理器下载了支持库的 20 更新。

我已将 jar 文件添加到 libs 文件夹 - 并添加到构建路径 - 使用 RecyclerView 运气不好。

根据Android Developer's API 还尝试使用 gradle 依赖项 - 不确定这是否是正确的查看位置 - 此页面与 AndroidTV 更多相关:

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

无法同步项目。

有什么想法吗?

【问题讨论】:

    标签: android gradle android-5.0-lollipop android-recyclerview


    【解决方案1】:

    想通了。

    您必须添加以下 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:+'
    }
    

    【讨论】:

    • compileSdkVersion 'android-L' - 提供 INSTALL_FAILED_OLDER_SDK
    • 你是如何用 Eclipse 做的?
    • this reddit post 在收到 INSTALL_FAILED_OLDER_SDK 错误后让我更进一步。
    • 为什么支持库依赖于最新版本的Android?这违背了拥有支持库的全部目的。
    • 如果您想针对旧版本的 Android 进行编译,您可以。为了摆脱 INSTALL_FAILED_OLDER_SDK 错误,您需要将 AndroidManifest.xml 文件中的 <uses-sdk /> 声明替换为:<uses-sdk tools:node="replace" />
    【解决方案2】:

    我使用以下几行创建,这对我有用。

    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'' 以非完成-零退出值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.+',也失败了:(
    【解决方案3】:

    这对我有用:

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

    【讨论】:

    • 这不是问题,你写的只是他已经包含的另一个版本
    【解决方案4】:

    现在可以通过在 app gradle 中编译设计依赖来添加 RecyclerView:

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

    【讨论】:

    【解决方案5】:

    如果您已编译 SDK 版本 22.2.0,则添加以下依赖项以用于回收站视图和 cardview 附加以支持 cardView

    // 用于将所有库包含在目录lib中
    compile fileTree(include: ['*.jar'], dir: 'libs')
    // 支持 appcompat
    compile 'com.android.support:appcompat-v7:22.2.0'
    //用于包含 google 支持设计(这使得从 2.3 及更高版本实现材料设计主题成为可能)
    `编译'com.android.support:design:22.2.0'

    要添加回收器视图,请使用以下依赖项
    compile 'com.android.support:recyclerview-v7:22.2.0'


    之后点击 Build->rebuild project 就完成了。

    【讨论】:

      【解决方案6】:
      compile 'com.android.support:recyclerview-v7:24.2.1'
      

      这对我有用。 试试看。

      【讨论】:

        【解决方案7】:

        我面前的步骤只是少了一步。

        修改build.gradle(Module:app)并添加以下依赖项后:

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

        (必要时添加卡片视图)

        然后您必须转到 Build > Clean Project 以消除任何错误

        【讨论】:

        • 谢谢,我在 Android Studio 上苦苦挣扎了好几个小时,你的 Clean Project 想法成功了,再次感谢。
        【解决方案8】:
        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 文件中创建您的依赖项,对我有用。

        【讨论】:

          【解决方案9】:

          在我的情况下,我通过将 compile 'com.android.support:recyclerview-v7:22.0.0' 作为依赖项放入我的 gradle 构建来修复它

          (使用 Android studio v. 1.2.1.1 和所有 sdk 更新。)

          当代码更新得如此之快,IDE 无法跟踪它们,并且您必须手动修复它们时,这真的很烦人,浪费时间和资源。

          不过好吧,终于成功了。

          【讨论】:

            【解决方案10】:

            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)以避免不可预测的构建,请查看 library revisions

            【讨论】:

              【解决方案11】:
              implementation 'com.android.support:appcompat-v7:28.0.0'
              
              implementation 'com.android.support:recyclerview-v7:28.0.0'
              

              以上在 build.gradle 文件中对我有用

              【讨论】:

                【解决方案12】:

                我使用了一个小技巧来在旧设备上使用 RecyclerView。我刚刚进入我的本地 m2 存储库并拿起 RecyclerView 源文件并将它们放入我的项目中。

                你可以在这里找到源代码:

                \extras\android\m2repository\com\android\support\recyclerview-v7\21.0.0-rc1\recyclerview-v7-21.0.0-rc1-sources.jar

                【讨论】:

                  【解决方案13】:

                  其他答案对我不起作用。我不得不添加这一行:

                  编译'com.android.support:recyclerview-v7:21.0.0'

                  【讨论】:

                    【解决方案14】:

                    -转到activity_main.xml中的DESIGN部分 - 在拖放托盘中选择 appCompactivity - 在 appCompactivity 中选择 RecyclerView - 在选择时会出现一个对话框,点击OK - 你的项目 app:gradle 会自动更新

                    【讨论】:

                      【解决方案15】:

                      我的依赖;

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

                      我只添加了compile 'com.android.support:recyclerview-v7:25.1.0'。重要的是添加与 appcompat

                      相同版本 的 RecycleView 依赖项

                      【讨论】:

                        【解决方案16】:

                        如果您使用 Android Studio 的更新版或 2018 版...

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

                        会给你一个错误并显示以下消息 “配置‘编译’已过时,已替换为‘实现’和‘API’。 它将在 2018 年底被删除。”

                        试试这个

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

                        【讨论】:

                          【解决方案17】:

                          我用这个对我有用。需要考虑的一件事是您使用的是什么appcompat 版本。我正在使用appcompat-v7:26.+,所以这对我有用。

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

                          【讨论】:

                            【解决方案18】:

                            将 RecyclerView 导入您的项目的一个好方法是RecyclerViewLib。这是一个开源库,它提取了 RecyclerView 以使其安全且易于实现。你可以阅读作者的博文here

                            在代码中添加以下行作为 gradle 依赖项:

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

                            更多关于如何引入 gradle 依赖的信息:

                            波斯尼亚你说得对,这很烦人。 Gradle 可能看起来很复杂,但它非常强大和灵活。一切都是用 groovy 语言完成的,学习 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。这不是必需的,但这是一个好主意。您没有或不想在您的项目中拥有该库的源代码,因此您必须指向互联网。在您的模块/应用程序的 build.gradle 中,您可以将此答案开头的那一行放在同一位置。或者,如果按照示例示例,您可以将 ':library' 替换为 ' com.twotoasters.RecyclerViewLib:library:1.0.+@aar ' 并使用排除项。

                            【讨论】:

                            • 我收到了这个错误:Could not find any version that matches com.twotoasters.RecyclerViewLib:library:1.0.+ :-/
                            • 您是否将它放在 build.gradle 中的正确位置?你把它放在你的模块 build.gradle 中了吗?
                            • “正确”的地方在哪里?我只是将这些行附加到我的 build.gradle 中,将其放在 android {} 的外部/内部,buildscript {} 的内部/外部,但对我没有任何作用。我是 gradle 的新手,它似乎非常复杂......当我读到“只要把这条线......”之类的东西时,它非常烦人...... :-(
                            • @Besnik 我用有关成绩构建系统的更多信息更新了我的答案。我希望这些信息对您有所帮助。
                            • 谢谢!我会在接下来的几天里试一试:-)
                            【解决方案19】:
                            import android.support.v7.widget.RecyclerView;
                            

                            在 Android Studio 中,导入并不像人们希望的那样直观。尝试导入这个位,看看它有什么帮助!

                            【讨论】:

                            • 问题是关于 Gradle 依赖项,而不是 Java 导入。
                            【解决方案20】:

                            如果有人仍然有这个问题 - 您不必更改 compileSdkVersion,这只会破坏支持库的全部目的。

                            相反,在您的 gradle.build 文件中使用这些:

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

                            【讨论】:

                            • 不建议使用+符号,至少指定主版本。
                            【解决方案21】:

                            这对我有用

                            定义互联网权限

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

                            制作食物.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>
                            

                            【讨论】:

                              【解决方案22】:

                              只是更新:

                              'compile' 现在已经过时了;它已被“实施”和“API”取代。 我相信它将在 2018 年底被删除。更多信息请见:http://d.android.com/r/tools/update-dependency-configurations.html

                              所有 com.android.support 库也必须使用完全相同的版本规范;此外,appcompat-v7 和 recyclerview-v7 等支持库不应使用与 compileSdkVersion 不同的版本。

                              【讨论】:

                                猜你喜欢
                                • 1970-01-01
                                • 1970-01-01
                                • 1970-01-01
                                • 2014-08-24
                                • 2014-09-09
                                • 1970-01-01
                                • 1970-01-01
                                • 2014-08-20
                                • 1970-01-01
                                相关资源
                                最近更新 更多