91

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

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

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

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

无法同步项目。

有任何想法吗?

4

22 回答 22

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:+'
}
于 2014-06-26T22:08:38.513 回答
85

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

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

安卓X

implementation 'androidx.recyclerview:recyclerview:1.1.0'
implementation 'androidx.cardview:cardview:1.0.0'
于 2014-12-02T06:22:41.590 回答
9

这对我有用:

compile 'com.android.support:recyclerview-v7:21.0.0-rc1'
于 2014-06-26T22:07:12.880 回答
7

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

dependencies {
...
compile 'com.android.support:design:24.0.0'
}
于 2016-08-21T02:41:28.393 回答
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 'com.android.support:design:22.2. 0'

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


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

于 2015-06-25T19:17:50.907 回答
3
compile 'com.android.support:recyclerview-v7:24.2.1'

这对我有用。试试看。

于 2016-09-19T06:55:00.740 回答
2

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

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

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

(必要时添加卡片视图)

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

于 2015-05-10T18:52:30.553 回答
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 文件中创建您的依赖项,对我有用。

于 2015-06-06T11:37:08.820 回答
2

就我而言,我通过将compile 'com.android.support:recyclerview-v7:22.0.0'其作为依赖项放入我的 gradle 构建中来修复它

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

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

但好吧,最后它起作用了。

于 2015-06-09T09:52:37.380 回答
2
implementation 'com.android.support:appcompat-v7:28.0.0'

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

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

于 2018-12-26T10:10:48.613 回答
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)以避免不可预测的构建,检查库修订

于 2017-02-08T12:01:16.540 回答
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

于 2014-07-28T06:06:15.117 回答
1

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

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

于 2014-10-18T17:00:50.170 回答
1

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

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

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

尝试使用这个

implementation 'com.android.support:recyclerview-v7:+'
于 2018-10-06T08:09:40.063 回答
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'
}

我只添加了compile 'com.android.support:recyclerview-v7:25.1.0'。重要的是添加与 appcompat版本相同RecycleView依赖项

于 2017-12-01T12:55:19.020 回答
1

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

于 2017-08-04T19:55:52.377 回答
1

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

implementation 'com.android.support:recyclerview-v7:26.+'
于 2017-11-23T12:37:47.387 回答
0

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

将以下行添加为代码中的 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 '并使用排除项。

于 2014-09-13T20:20:52.593 回答
0
import android.support.v7.widget.RecyclerView;

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

于 2015-03-07T05:41:02.277 回答
0

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

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

compile 'com.android.support:cardview-v7:+'
compile 'com.android.support:recyclerview-v7:+'
compile 'com.android.support:palette-v7:+'`
于 2015-09-09T09:24:10.483 回答
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;
    }
}

制作食物.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>
于 2018-03-15T06:29:40.477 回答
0

只是一个更新:

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

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

于 2018-09-09T12:18:10.763 回答