Der Versuch, die neue RecyclerView aus der Support-Bibliothek zu verwenden. Ich habe das 20 Update für die Support-Bibliothek mit dem SDK-Manager heruntergeladen.
Ich habe die JAR-Datei zum libs-Ordner hinzugefügt - und zum Build-Pfad hinzugefügt - mit dem RecyclerView kein Glück.
Versuchte, auch die Abstufungsabhängigkeit nach Android Developer's API zu verwenden - nicht sicher, ob dies der richtige Ort ist, um nachzuschauen - diese Seite bezieht sich mehr auf AndroidTV:
com.Android.support:recyclerview-v7:20.0.+
Das Projekt kann nicht synchronisiert werden.
Irgendwelche Ideen?
Herausgefunden.
Sie müssen die folgende Abstufungsabhängigkeit hinzufügen:
compile 'com.Android.support:recyclerview-v7:+'
ein anderes Problem, das ich kompilierte, war die compileSdkVersion
. Anscheinend müssen Sie es gegen Android-L
kompilieren.
Ihre build.gradle-Datei sollte ungefähr so aussehen:
apply plugin: 'Android'
Android {
compileSdkVersion 'Android-L'
buildToolsVersion '19.1.0'
[...]
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.Android.support:recyclerview-v7:+'
}
Ich habe mit folgenden Zeilen erstellt und das funktioniert für mich.
implementation 'com.Android.support:appcompat-v7:28.0.0'
implementation 'com.Android.support:recyclerview-v7:28.0.0'
Das vollständige Tutorial finden Sie unter hier
Das funktioniert für mich:
compile 'com.Android.support:recyclerview-v7:21.0.0-rc1'
RecyclerView kann jetzt hinzugefügt werden, indem die Entwurfsabhängigkeit in App Gradle kompiliert wird:
dependencies {
...
compile 'com.Android.support:design:24.0.0'
}
Wenn Sie SDK Version 22.2.0 kompiliert haben, fügen Sie für die Unterstützung von cardView die folgenden Abhängigkeiten für die Recycler-Ansicht und die Kartenansicht hinzu
// m die gesamte Bibliothek in das Verzeichnis lib aufzunehmencompile fileTree(include: ['*.jar'], dir: 'libs')
// für Support AppCompatcompile 'com.Android.support:appcompat-v7:22.2.0'
// für die Einbindung von Google Support Design (ermöglicht die Implementierung von Material Design Theme ab 2.3 und höher
`compile 'com.Android.support:design:22.2.0'
verwenden Sie zum Hinzufügen der Recycler-Ansicht die folgende Abhängigkeit
compile 'com.Android.support:recyclerview-v7:22.2.0'
Danach klicken Sie auf Build-> rebuild project und Sie sind fertig.
compile 'com.Android.support:recyclerview-v7:24.2.1'
Das funktioniert für mich ... __ probieren Sie es aus.
in meinem Fall habe ich es behoben, indem ich compile 'com.Android.support:recyclerview-v7:22.0.0'
als Abhängigkeit in meinen Gradle-Build eingefügt habe
(mit Android Studio v. 1.2.1.1 und allen SDKs aktualisiert.)
Es ist wirklich ärgerlich, wenn Codes so schnell aktualisiert werden und die IDE sie nicht nachverfolgen kann, und Sie müssen sie manuell beheben und Zeit und Ressourcen verschwenden.
Aber endlich funktioniert es.
nimm die Abhängigkeit in das build.gradle
und synchronisieren Sie das Projekt mit gradle
Dateien
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'
}
Fügen Sie die Revision (hier 25.1.1) hinzu, um unvorhersehbare Builds zu vermeiden. Aktivieren Sie Bibliotheksrevisionen
Bei den Schritten vor mir fehlt nur ein Schritt.
Nach dem Ändern von build.gradle (Module: app) und Hinzufügen der folgenden Abhängigkeiten:
'com.Android.support:cardview-v7:21.0.+' kompilieren
'com.Android.support:recyclerview-v7:21.0.+' kompilieren
(Fügen Sie ggf. cardview hinzu)
Sie müssen dann zu Build> Clean Project gehen, um Fehler zu beseitigen
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'
}
Machen Sie einfach Ihre Abhängigkeiten wie oben in build.gradle-Datei, die für mich gearbeitet haben.
Ich habe diese verwendet, arbeitet für mich. Eine Sache muss berücksichtigt werden, welche Version von appcompat
Sie verwenden. Ich benutze appcompat-v7:26.+
, also funktioniert das für mich.
implementation 'com.Android.support:recyclerview-v7:26.+'
implementation 'com.Android.support:appcompat-v7:28.0.0'
implementation 'com.Android.support:recyclerview-v7:28.0.0'
Oben funktioniert für mich inbuild.gradle
file
Ich habe einen kleinen Hack verwendet, um den RecyclerView auf älteren Geräten zu verwenden. Ich ging einfach in mein lokales m2-Repository und nahm die RecyclerView-Quelldateien auf und fügte sie in mein Projekt ein.
Den Quellcode finden Sie hier:
<Android-SDK>\extras\Android\m2repository\com\Android\support\recyclerview-v7\21.0.0-rc1\recyclerview-v7-21.0.0-rc1-sources.jar
-Gehen Sie zu DESIGN in activity_main.xml - Wählen Sie appCompactivity - in appCompactivity. Wählen Sie RecyclerView - Bei Auswahl eines Dialogs erscheint ein Klick auf OK - Ihre Projekt-App: gradle wird automatisch aktualisiert
Andere Antworten haben bei mir nicht funktioniert. Ich musste diese Zeile hinzufügen:
"com.Android.support:recyclerview-v7:21.0.0" kompilieren
Meine Abhängigkeiten;
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'
}
Ich habe nur compile 'com.Android.support:recyclerview-v7:25.1.0' hinzugefügt. Wichtig ist das Hinzufügen der RecycleView-Abhängigkeit, die als gleiche Version als appcompat gilt.
Wenn Sie die aktualisierte oder 2018-Version für Android Studio verwenden ...
compile 'com.Android.support:recyclerview-v7:+'
mit der folgenden Meldung wird ein Fehler angezeigt. "Die Konfiguration 'compile' ist veraltet und wurde durch 'Implementierung' und 'API' ersetzt.
Versuchen Sie es damit
implementation 'com.Android.support:recyclerview-v7:+'
Das funktioniert für mich
Internet-Berechtigung definieren
<uses-permission Android:name="Android.permission.INTERNET" >
Abhängigkeit hinzufügen
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'
}
In der Hauptaktivität
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();
}
});
}
}
Machen Sie die Klasse 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;
}
}
Make 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;
}
}
In 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>
Wenn immer noch jemand dieses Problem hat - Sie müssen compileSdkVersion
nicht ändern, ist dies der Zweck von Support-Bibliotheken.
Verwenden Sie diese stattdessen in Ihrer gradle.build
-Datei:
compile 'com.Android.support:cardview-v7:+'
compile 'com.Android.support:recyclerview-v7:+'
compile 'com.Android.support:palette-v7:+'`
import Android.support.v7.widget.RecyclerView;
In Android Studio ist das Importieren nicht so intuitiv, wie man hoffen würde. Versuchen Sie, dieses Bit zu importieren und sehen Sie, wie es hilft!
Eine gute Möglichkeit, die RecyclerView in Ihr Projekt zu importieren, ist die RecyclerViewLib . Dies ist eine Open-Source-Bibliothek, die RecyclerView für eine sichere und einfache Implementierung herausgezogen hat. Sie können den Blogbeitrag des Autors hier lesen.
Fügen Sie im Code die folgende Zeile als Abstufungsabhängigkeit hinzu:
dependencies {
compile 'com.twotoasters.RecyclerViewLib:library:[email protected]'
}
Weitere Informationen zum Einfügen von Abstufungsabhängigkeiten:
Bosnien, Sie haben recht, dass das nervig ist. Gradle mag kompliziert erscheinen, ist aber extrem leistungsfähig und flexibel. Alles wird in der Sprache Groovy erledigt, und wenn Sie das Gradle-System lernen, lernen Sie eine andere Sprache, damit Sie Ihre Android-App erstellen können. Es tut jetzt weh, aber auf lange Sicht wirst du es lieben.
Testen Sie das build.gradle für dieselbe App. https://github.com/twotoasters/RecyclerViewLib/blob/master/sample/build.gradle Wo dies der Fall ist, bringt es die lib in das Modul (auch als Beispiel-App bekannt)
compile (project (':library')) {
exclude group: 'com.Android.support', module: 'support-v4'
}
Achten Sie auf den Speicherort dieser Datei. Dies ist nicht die oberste Ebene von build.gradle
Da sich die lib-Quelle im selben Projekt befindet, kann sie dies mit dem einfachen ':library'
tun. Die Variable exclude
teilt der lib mit, dass sie die Unterstützung der Beispielanwendung v4 verwenden soll. Das ist nicht notwendig, aber eine gute Idee. Sie haben nicht die Quelle der Bibliothek in Ihrem Projekt und möchten diese nicht haben, deshalb müssen Sie dafür auf das Internet verweisen. Im build.gradle Ihres Moduls/app würden Sie diese Zeile am Anfang dieser Antwort an derselben Stelle platzieren. Wenn Sie dem Beispielbeispiel folgen, können Sie ':library'
durch ' com.twotoasters.RecyclerViewLib:library:[email protected] '
ersetzen und die Ausschlüsse verwenden.
Nur ein Update:
'compile' ist jetzt veraltet; Es wurde durch "Implementierung" und "API" ersetzt. Es wird Ende 2018 entfernt, glaube ich. Weitere Informationen finden Sie unter: http://d.Android.com/r/tools/update-dependency-configurations.html
Alle com.Android.support-Bibliotheken müssen exakt dieselbe Versionsspezifikation verwenden. Unterstützungsbibliotheken wie appcompat-v7 und recyclerview-v7 sollten außerdem keine andere Version als compileSdkVersion verwenden.