如何为Android L预览导入RecyclerView


90

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

我已经将jar文件添加到libs文件夹中-并添加到了构建路径中-使用RecyclerView祝您好运。

根据Android开发人员的API尝试也使用gradle依赖项-不确定这是否是正确的地方-此页面与AndroidTV相关性更高:

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

无法gradle同步项目。

有任何想法吗?

Answers:


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:进程'command'/ usr / lib / jvm / java-7-openjdk-amd64 / bin / java''以非-零退出值2。我在项目中添加第二个依赖项时运行项目时出现此错误。请修复任何一个??。
Ajay Bhayani 2015年

我的应用程序gradle.build已经编译了``com.android.support:appcompat-v7:23.2.1''。所以我尝试添加编译'com.android.support:recyclerview-v7:23.2.1'-与appcompat相同的版本,但是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'android-L'–给出INSTALL_FAILED_OLDER_SDK
L'– Oleksii Malovanyi 2014年

4
如何使用Eclipse?
android开发人员

2
在发生INSTALL_FAILED_OLDER_SDK错误后,此reddit帖子使我更进一步。
奥伦

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,则为回收者视图添加以下依赖项,并为cardview的支持添加cardview的其他依赖项

// 用于将所有库包含在目录lib中
compile fileTree(include: ['*.jar'], dir: 'libs')
// 用于支持appcompat
compile 'com.android.support:appcompat-v7:22.2.0'
// 用于包括google支持设计(它可以实现2.3及更高版本的材质设计主题)
` compile'c​​om.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.+'

(如有必要,添加卡片视图)

然后,您必须转到Build> Clean Project摆脱任何错误


谢谢男人,我已经在Android Studio上苦苦挣扎了好几个小时,您的Clean Project想法完成了任务,再次感谢。
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'
}

只需在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)以避免生成不可预测的版本,请检查库修订版本



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中DESIGN部分 -在拖放托盘中选择appCompactivity-appCompactivity中选择RecyclerView-在 选择时将出现一个对话框,单击确定 -您的项目应用程序: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依赖的值,作为同一版本程序兼容性


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源代码在同一个项目中,所以可以使用simple来实现':library'。该exclude告诉库使用示例应用程序的支持v4。那不是必须的,但是个好主意。您的项目中没有或不想拥有lib的源,因此您必须指向Internet。在模块/应用程序的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 2014年

“正确的”地方在哪里?我只是将这些行添加到我的build.gradle中,将其放置在android {}的外部/内部,buildscript {}的内部/外部,但对我没有任何帮助。我是新手,似乎太过复杂了……当我读到类似“只要把这条线...”这样的内容时,它就很烦人了……:-(
Besnik

1
@Besnik我用有关成绩构建系统的更多信息更新了我的答案。我希望这些信息对您有所帮助。
MinceMan 2014年

谢谢!我会在接下来的日子里尝试一下:-)
Besnik 2014年

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

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


问题是关于Gradle依赖关系,而不是Java导入。
OneCricketeer '16

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不同的版本。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.