نمایش اطلاعات در RecyclerView

پرسیده شده
فعالیت 975 روز پیش
دیده شده 420 بار
0

سلام و عرض ادب خدمت شما

وقتی اطلاعات در میخواهم در RecyclerView نمایش دهم اپ کرش میکند با این ارور

ممنون میشم راهنمایی کنید

 

2021-09-04 02:13:35.826 4321-4321/com.example.myapplication E/AndroidRuntime: FATAL EXCEPTION: main
   Process: com.example.myapplication, PID: 4321
   android.content.res.Resources$NotFoundException: String resource ID #0xad
       at android.content.res.Resources.getText(Resources.java:335)
       at android.widget.TextView.setText(TextView.java:5024)
       at com.example.myapplication.main.StudentAdapter$StudentViewHolder.bind(StudentAdapter.java:55)
       at com.example.myapplication.main.StudentAdapter.onBindViewHolder(StudentAdapter.java:29)
       at com.example.myapplication.main.StudentAdapter.onBindViewHolder(StudentAdapter.java:16)
       at androidx.recyclerview.widget.RecyclerView$Adapter.onBindViewHolder(RecyclerView.java:7254)
       at androidx.recyclerview.widget.RecyclerView$Adapter.bindViewHolder(RecyclerView.java:7337)
       at androidx.recyclerview.widget.RecyclerView$Recycler.tryBindViewHolderByDeadline(RecyclerView.java:6194)
       at androidx.recyclerview.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:6460)
       at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:6300)
       at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:6296)
       at androidx.recyclerview.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2330)
       at androidx.recyclerview.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1631)
       at androidx.recyclerview.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1591)
       at androidx.recyclerview.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:668)
       at androidx.recyclerview.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:4309)
       at androidx.recyclerview.widget.RecyclerView.dispatchLayout(RecyclerView.java:4012)
       at androidx.recyclerview.widget.RecyclerView.onLayout(RecyclerView.java:4578)
       at android.view.View.layout(View.java:17638)
       at android.view.ViewGroup.layout(ViewGroup.java:5575)
       at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
       at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
       at android.view.View.layout(View.java:17638)
       at android.view.ViewGroup.layout(ViewGroup.java:5575)
       at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
       at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
       at android.view.View.layout(View.java:17638)
       at android.view.ViewGroup.layout(ViewGroup.java:5575)
       at androidx.appcompat.widget.ActionBarOverlayLayout.onLayout(ActionBarOverlayLayout.java:536)
       at android.view.View.layout(View.java:17638)
       at android.view.ViewGroup.layout(ViewGroup.java:5575)
       at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
       at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
       at android.view.View.layout(View.java:17638)
       at android.view.ViewGroup.layout(ViewGroup.java:5575)
       at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1741)
       at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1585)
       at android.widget.LinearLayout.onLayout(LinearLayout.java:1494)
       at android.view.View.layout(View.java:17638)
       at android.view.ViewGroup.layout(ViewGroup.java:5575)
       at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
       at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
       at com.android.internal.policy.DecorView.onLayout(DecorView.java:727)
       at android.view.View.layout(View.java:17638)
       at android.view.ViewGroup.layout(ViewGroup.java:5575)
       at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2346)
       at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2068)
       at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1254)
       at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6338)
       at android.view.Choreographer$CallbackRecord.run(Choreographer.java:874)
       at android.view.Choreographer.doCallbacks(Choreographer.java:686)
       at android.view.Choreographer.doFrame(Choreographer.java:621)
       at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:860)
       at android.os.Handler.handleCallback(Handler.java:751)
2021-09-04 02:13:35.826 4321-4321/com.example.myapplication E/AndroidRuntime:     at android.os.Handler.dispatchMessage(Handler.java:95)
       at android.os.Looper.loop(Looper.java:154)
       at android.app.ActivityThread.main(ActivityThread.java:6198)
       at java.lang.reflect.Method.invoke(Native Method)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:891)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:781) 
فایل پیوست

0
حذف شده

MainActivity code

package com.example.myapplication.main;

import androidx.appcompat.app.AppCompatActivity;
import androidx.lifecycle.ViewModelProvider;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import android.os.Bundle;
import android.util.Log;

import com.example.myapplication.R;
import com.example.myapplication.model.ApiServiceProvider;
import com.example.myapplication.model.AppDatabase;
import com.example.myapplication.model.Student;
import com.example.myapplication.model.StudentRepository;

import java.util.List;

public class MainActivity extends AppCompatActivity {
    private static final String TAG = "MainActivity";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        MainViewModel model = new ViewModelProvider(this,
                new MainViewModelFactory(
                        new StudentRepository(
                                ApiServiceProvider.getApiService(),
                                AppDatabase.getAppDatabase(getApplicationContext())
                                        .studentDao()))).get(MainViewModel.class);


        model.getStudents().observe(this,students->{
            RecyclerView recyclerView =findViewById(R.id.rv_main);
            recyclerView.setLayoutManager(new LinearLayoutManager(this,RecyclerView.VERTICAL,false));
            StudentAdapter adapter = new StudentAdapter(students);
            recyclerView.setAdapter(adapter);
            Log.i(TAG, "onCreate: ");
        });

        model.getError().observe(this,error->{
        Log.e(TAG, "onCreate: ");
        });
    }
}
فایل پیوست

پارسا چراغی باغوردانی

توسط

پارسا چراغی باغوردانی

12 شهریور 00

0
حذف شده

StudentAdapter Code

package com.example.myapplication.main;

import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;

import com.example.myapplication.R;
import com.example.myapplication.model.Student;

import java.util.List;

public class StudentAdapter extends RecyclerView.Adapter<StudentAdapter.StudentViewHolder> {
    private List<Student> students;
    StudentAdapter(List<Student> students){
        this.students=students;
    }
    @NonNull
    @Override
    public StudentViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        return new StudentViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_student,parent,false));
    }

    @Override
    public void onBindViewHolder(@NonNull StudentViewHolder holder, int position) {
        holder.bind(students.get(position));
    }

    @Override
    public int getItemCount() {
        return students.size();
    }

    public class StudentViewHolder extends RecyclerView.ViewHolder{
        private TextView firstCharTv;
        private TextView fullNameTv;
        private TextView courseTv;
        private TextView scoreTv;
        public StudentViewHolder(@NonNull View itemView) {
            super(itemView);

            firstCharTv=itemView.findViewById(R.id.item_student_firstCharacter);
            fullNameTv=itemView.findViewById(R.id.item_student_fullName);
            courseTv=itemView.findViewById(R.id.item_student_course);
            scoreTv=itemView.findViewById(R.id.item_student_score);
        }

        public void bind(Student student){
            firstCharTv.setText(student.getFirstName().substring(0,1));
            fullNameTv.setText(student.getFirstName()+" "+student.getLastName());
            courseTv.setText(student.getCourse());
            scoreTv.setText(student.getScore());
        }
    }
}
فایل پیوست

پارسا چراغی باغوردانی

توسط

پارسا چراغی باغوردانی

12 شهریور 00

0
حذف شده

سلام وقتت بخیر پارسا جان

 

ارور مربوط میشه به کد زیر و به این دلیل هست ما نمیتونیم integer رو به setText بدیم تا برامون روی ویو ست کنه.

scoreTv.setText(student.getScore());

که باید بنویسید

scoreTv.setText(String.valueOf(student.getScore()));

و ادپتر کامل شما خواهد شد


import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;

import java.util.ArrayList;
import java.util.List;

public class StudentAdapter extends RecyclerView.Adapter<StudentAdapter.StudentViewHolder> {

    private List<Student> students = new ArrayList<>();

    public void addStudents(List<Student> students) {
        this.students.clear();
        this.students.addAll(students);
        notifyDataSetChanged();
    }

    @NonNull
    @Override
    public StudentViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        return new StudentViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_student, parent, false));
    }

    @Override
    public void onBindViewHolder(@NonNull StudentViewHolder holder, int position) {
        holder.bind(students.get(position));
    }

    @Override
    public int getItemCount() {
        return students.size();
    }

    public static class StudentViewHolder extends RecyclerView.ViewHolder {
        private TextView fullNameTv;
        private TextView courseTitleTv;
        private TextView scoreTv;
        private TextView firstCharacterTv;

        public StudentViewHolder(@NonNull View itemView) {
            super(itemView);
            fullNameTv = itemView.findViewById(R.id.tv_student_fullName);
            courseTitleTv = itemView.findViewById(R.id.tv_student_course);
            scoreTv = itemView.findViewById(R.id.tv_student_score);
            firstCharacterTv = itemView.findViewById(R.id.tv_student_firstCharacter);
        }

        public void bind(Student student) {
            fullNameTv.setText(student.getFirstName() + " " + student.getLastName());
            courseTitleTv.setText(student.getCourse());
            scoreTv.setText(String.valueOf(student.getScore()));
            firstCharacterTv.setText(student.getFirstName().substring(0, 1));
        }
    }
}
فایل پیوست

پوریا شفیعی

توسط

پوریا شفیعی

13 شهریور 00