Android L- 미리보기 용 RecyclerView를 가져 오는 방법
지원 라이브러리에서 새 RecyclerView를 사용하려고합니다. SDK 관리자를 사용하여 지원 라이브러리 용 20 업데이트를 다운로드했습니다.
jar 파일을 libs 폴더에 추가하고 빌드 경로에 추가했습니다. RecyclerView를 사용하면 운이 없습니다.
Android 개발자의 API 에 따라 gradle 종속성도 사용하려고 시도 했습니다. 이것이 올바른 위치인지 확실하지 않습니다.이 페이지는 AndroidTV와 더 관련이 있습니다.
com.android.support:recyclerview-v7:20.0.+
프로젝트를 gradle 동기화 할 수 없습니다.
어떤 아이디어?
나는 다음 줄을 사용하여 만들었으며 이것은 나를 위해 작동합니다.
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-alpha06'
implementation 'androidx.cardview:cardview:1.0.0'
그것을 알아 냈습니다.
다음 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:+'
}
이것은 나를 위해 작동합니다.
compile 'com.android.support:recyclerview-v7:21.0.0-rc1'
이제 앱 Gradle에서 디자인 종속성을 컴파일하여 RecyclerView를 추가 할 수 있습니다.
dependencies {
...
compile 'com.android.support:design:24.0.0'
}
Compiled SDK 버전 22.2.0이있는 경우 recycler보기 및 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 프로젝트를 클릭하면 완료됩니다.
compile 'com.android.support:recyclerview-v7:24.2.1'
이것은 나를 위해 작동합니다. 시도 해봐.
내 앞에있는 단계는 한 단계 빠졌습니다.
변경 후 build.gradle를 다음 종속성을 (응용 프로그램 모듈) 및 추가 :
컴파일 'com.android.support:cardview-v7:21.0.+'
컴파일 'com.android.support:recyclerview-v7:21.0.+'
(필요한 경우 카드 뷰 추가)
그런 다음 빌드> 프로젝트 정리 로 이동하여 오류를 제거해야합니다.
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 파일에서 종속성을 만드십시오.
제 경우에는 compile 'com.android.support:recyclerview-v7:22.0.0'
gradle 빌드에 종속성으로 넣어 수정했습니다.
(Android 스튜디오 v. 1.2.1.1 및 모든 SDK 업데이트 포함)
코드가 너무 빨리 업데이트되고 IDE가 코드를 추적 할 수없고 수동으로 수정해야하므로 시간과 리소스가 낭비되는 것은 정말 성가신 일입니다.
하지만 드디어 작동합니다.
에 종속성을 포함하고 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)을 포함하고 라이브러리 개정판을 확인하십시오.
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support:recyclerview-v7:28.0.0'
위의 build.gradle
파일 에서 나를 위해 작동 합니다.
이전 장치에서 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
다른 답변은 저에게 효과가 없었습니다. 이 줄을 추가해야했습니다.
'com.android.support:recyclerview-v7:21.0.0'컴파일
받는 가자 가자 디자인 에 참여 activity_main.xml 선택 팔레트 드래그 드롭 -In appCompactivity -In appCompactivity 선택 RecyclerView -On 선택을 클릭하여 표시하여야한다 대화 OK - 귀하의 프로젝트 응용 프로그램을 : Gradle을 자동으로 업데이트 얻을 것이다
내 의존성;
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 종속성 추가하는 동일한 버전 으로 APPCOMPAT을
Android Studio 용 업데이트 또는 2018 버전을 사용하는 경우 ...
compile 'com.android.support:recyclerview-v7:+'
"구성 '컴파일'은 더 이상 사용되지 않으며 '구현'및 'api'로 대체되었습니다. 2018 년 말에 제거됩니다."라는 오류 메시지가 표시됩니다.
이것을 사용해보십시오
implementation 'com.android.support:recyclerview-v7:+'
나는 이것을 사용했다. 한 가지는 appcompat
사용중인 버전을 고려해야합니다 . 나는 appcompat-v7:26.+
이것이 나를 위해 일하고 있으므로 사용 하고 있습니다.
implementation 'com.android.support:recyclerview-v7:26.+'
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 소스가 동일한 프로젝트에 있기 때문에 간단한 ':library'
. 는 exclude
샘플 응용 프로그램의 지원 v4를 사용하는 lib 디렉토리를 알려줍니다. 필수는 아니지만 좋은 생각입니다. 프로젝트에 lib의 소스가 없거나 원하지 않으므로 인터넷을 가리켜 야합니다. 모듈 / 앱의 build.gradle에서이 답변의 시작 부분에서 해당 줄을 같은 위치에 넣습니다. 샘플 예제를 다음과 같은 경우 또는, 당신은 대체 할 수 ':library'
와 함께 ' com.twotoasters.RecyclerViewLib:library:1.0.+@aar '
하고 제외를 사용합니다.
import android.support.v7.widget.RecyclerView;
Android Studio에서 가져 오기는 생각만큼 직관적이지 않습니다. 이 비트를 가져 와서 어떻게 도움이되는지 확인하십시오!
누군가 여전히이 문제가있는 경우-변경할 필요가 없습니다 compileSdkVersion
. 이는 지원 라이브러리의 전체 목적을 무효화 할뿐입니다.
대신 gradle.build
파일 에서 다음을 사용 하십시오.
compile 'com.android.support:cardview-v7:+'
compile 'com.android.support:recyclerview-v7:+'
compile 'com.android.support:palette-v7:+'`
이것은 나를 위해 작동합니다
인터넷 권한 정의
<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>
업데이트 :
'컴파일'은 이제 쓸모가 없습니다. '구현'과 'api'로 대체되었습니다. 2018 년 말에 제거 될 것입니다. 자세한 내용은 http://d.android.com/r/tools/update-dependency-configurations.html을 참조하십시오.
또한 모든 com.android.support 라이브러리는 정확히 동일한 버전 사양을 사용해야합니다. 또한 appcompat-v7 및 recyclerview-v7과 같은 지원 라이브러리는 compileSdkVersion과 다른 버전을 사용해서는 안됩니다.
참고 URL : https://stackoverflow.com/questions/24440852/how-to-import-recyclerview-for-android-l-preview
'Programing' 카테고리의 다른 글
std :: string to float 또는 double (0) | 2020.09.10 |
---|---|
HTML 표의 모든 행 삭제 (0) | 2020.09.10 |
eclipse.ini -vm 옵션을 어떻게 설정합니까? (0) | 2020.09.10 |
한 번만 마이그레이션 (0) | 2020.09.10 |
RuntimeException : 콘텐츠에는 id 속성이 'android.R.id.list'인 ListView가 있어야합니다. (0) | 2020.09.10 |