Я довольно новичок в разработке Android и следую этому уроку здесь - https://www.youtube.com/watch?v=18VcnYN5_LM Моя проблема в том, что при компиляции я получаю только одну строку вместо пяти строк , Я смотрел видео три раза, и я не понимаю, чего мне не хватает. Можете ли вы помочь мне определить проблему? Спасибо за вашу помощь!
Я включил MainActivity. java, myAdapter. java, my_row. xml, строки. xml и activity_main. xml. Ниже приведен снимок экрана, на котором я вижу только одну строку вместо пяти.
Снимок экрана приложения, показывающего 1 строку
MainActivity. java
package com.example.recyclerviewtest;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {
RecyclerView recyclerView;
String s1[], s2[];
int images[] = {
R.drawable.c,
R.drawable.csharp,
R.drawable.java,
R.drawable.php,
R.drawable.swift
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
recyclerView = findViewById(R.id.recyclerView);
s1 = getResources().getStringArray(R.array.programming_languages);
s2 = getResources().getStringArray(R.array.description);
myAdapter myAdapter = new myAdapter(this, s1, s2, images);
recyclerView.setAdapter(myAdapter);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
}
}
my_row. xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.cardview.widget.CardView
android:layout_width="409dp"
android:layout_height="wrap_content"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/myImageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@mipmap/ic_launcher" />
<TextView
android:id="@+id/programming_language_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:text="Title"
android:textSize="24sp"
android:textStyle="bold"
app:layout_constraintStart_toEndOf="@+id/myImageView"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/description_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="16dp"
android:text="Description"
android:textSize="16sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="@+id/programming_language_text" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.cardview.widget.CardView>
</androidx.constraintlayout.widget.ConstraintLayout>
myAdapter. java
package com.example.recyclerviewtest;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
public class myAdapter extends RecyclerView.Adapter<myAdapter.MyViewHolder> {
String data1[], data2[];
int images[];
Context context;
public myAdapter(Context ct, String s1[], String s2[], int img[]) {
context = ct;
data1 = s1;
data2 = s2;
images = img;
}
@NonNull
@Override
public myAdapter.MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
LayoutInflater inflater = LayoutInflater.from(context);
View view = inflater.inflate(R.layout.my_row, parent, false);
return new MyViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
holder.myText1.setText(data1[position]);
holder.myText2.setText(data2[position]);
holder.myImage.setImageResource(images[position]);
}
@Override
public int getItemCount() {
return data1.length;
}
public class MyViewHolder extends RecyclerView.ViewHolder {
TextView myText1, myText2;
ImageView myImage;
public MyViewHolder(@NonNull View itemView) {
super(itemView);
myText1 = itemView.findViewById(R.id.programming_language_text);
myText2 = itemView.findViewById(R.id.description_text);
myImage = itemView.findViewById(R.id.myImageView);
}
}
}
строк. xml
<resources>
<string name="app_name">RecyclerViewTest</string>
<string-array name="programming_languages">
<item>C++</item>
<item>C#</item>
<item>Java</item>
<item>PHP</item>
<item>Swift</item>
</string-array>
<string-array name="description">
<item>Lorem ipsum C++</item>
<item>Lorem ipsum C#</item>
<item>Lorem ipsum Java</item>
<item>Lorem ipsum PHP</item>
<item>Lorem ipsum Swift</item>
</string-array>
</resources>
activity_main. xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="409dp"
android:layout_height="601dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>