تابستون داره تموم میشه ها، فرصت‌ها محدودن کلی آفر جذاب در کمپین تابستون🔥👇
۰ ثانیه
۰ دقیقه
۰ ساعت
۵ محمد
اجرا نشدن برنامه 2
جامعه جاوا (اندروید) ایجاد شده در ۰۴ اردیبهشت ۱۴۰۱

این کدهایی که زدم

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;
 class ContactsAdapter extends RecyclerView.Adapter{
     private String[] contacts=new String[20];
     public void contactsadapter(){
         contacts[0]="ashly young";
         contacts[1]="Peadar Dawtrey";
         contacts[2]="Felipe Bradtke";
         contacts[3]="Claude Crissil";
         contacts[4]="Jacky Girardeau";
         contacts[5]="Rubia Dominguez";
         contacts[6]="Michaela Churchley";
         contacts[7]="Harvey Pentelow";
         contacts[8]="Neilla Langton";
         contacts[9]="Marco Greaves";
         contacts[10]="Liz Batchley";
         contacts[11]="Lamond Littlepage";
         contacts[12]="Malina Weir";
         contacts[13]="Tomlin Lenchenko";
         contacts[14]="Hy Pavelin";
         contacts[15]="Jenelle Palin";
         contacts[16]="Damon Knewstubb";
         contacts[17]="Alex Ivanusyev";
         contacts[18]="Hamil Callery";
         contacts[19]="Karol Syer";}
     private TextView fullnameTv;
     private TextView firstcharTv;
     @NonNull
     @Override
     public ContactViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
         View view=LayoutInflater.from(parent.getContext()).inflate(R.layout.item_contact , parent , false);
         return new ContactViewHolder(view);
     }
     @Override
     public void onBindViewHolder(@NonNull ContactViewHolder holder, int position) {
        holder.bincontacts(contacts[position]);
     }
     @Override
     public int getItemCount() {
         return contacts.length;
     }
     public class ContactViewHolder extends RecyclerView.ViewHolder{
         public ContactViewHolder(@NonNull View itemView) {
             super(itemView);
             fullnameTv=itemView.findViewById(R.id.tv_cantact_fullname);
             firstcharTv=itemView.findViewById(R.id.tv_cantact_firstChar);
         }
         public void bincontacts(String fullname){
             fullnameTv.setText(fullname);
             firstcharTv.setText(fullname.substring(0,1));
         }
     }
 }

سلام امیدوارم عالی باشید


دلیل متوقف شدن برنامه بخاطر این هست که ارث بری رو به درستی انجام ندادید

extends RecyclerView.Adapter<ContactsAdapter.ContactViewHolder>

همچنین کد کامل و صحیح:

import android.util.Log;
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;
public class ContactsAdapter extends RecyclerView.Adapter<ContactsAdapter.ContactViewHolder> {
    private String[] contacts = new String[20];
    private static final String TAG = "ContactsAdapter";
    public ContactsAdapter() {
        contacts[0] = "Ruthann Trustrie";
        contacts[1] = "Peadar Dawtrey";
        contacts[2] = "Felipe Bradtke";
        contacts[3] = "Claude Crissil";
        contacts[4] = "Jacky Girardeau";
        contacts[5] = "Rubia Dominguez";
        contacts[6] = "Michaela Churchley";
        contacts[7] = "Harvey Pentelow";
        contacts[8] = "Neilla Langton";
        contacts[9] = "Marco Greaves";
        contacts[10] = "Liz Batchley";
        contacts[11] = "Lamond Littlepage";
        contacts[12] = "Malina Weir";
        contacts[13] = "Tomlin Lenchenko";
        contacts[14] = "Hy Pavelin";
        contacts[15] = "Jenelle Palin";
        contacts[16] = "Damon Knewstubb";
        contacts[17] = "Alex Ivanusyev";
        contacts[18] = "Hamil Callery";
        contacts[19] = "Karol Syer";
    }
    @NonNull
    @Override
    public ContactViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        Log.i(TAG, "onCreateViewHolder: ");
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_contact, parent, false);
        return new ContactViewHolder(view);
    }
    @Override
    public void onBindViewHolder(@NonNull ContactViewHolder holder, int position) {
        Log.i(TAG, "onBindViewHolder: position=> " + position);
        holder.bindContact(contacts[position]);
    }
    @Override
    public int getItemCount() {
        return contacts.length;
    }
    public class ContactViewHolder extends RecyclerView.ViewHolder {
        private TextView firstCharacterTv;
        private TextView fullnameTv;
        public ContactViewHolder(@NonNull View itemView) {
            super(itemView);
            firstCharacterTv = itemView.findViewById(R.id.tv_contact_firstCharacter);
            fullnameTv = itemView.findViewById(R.id.tv_contact_fullname);
        }
        public void bindContact(String fullname) {
            fullnameTv.setText(fullname);
            firstCharacterTv.setText(fullname.substring(0, 1));
        }
    }
}

راستی ممنون میشم در صورت ثبت یک سوال مشابه سوالتون رو در ادامه همان سوال قبلی ادامه بدید : لینک

پوریا شفیعی ۰۴ اردیبهشت ۱۴۰۱، ۱۲:۱۹

سلام وقا بخیر ، متاسفانه درسوال قبلی دستم خورد که دیگه نتونستم اونجا مجدد سوالمو مطرح کنم

متاسفانه من اینکاری که گفتید رو هم انجام دادم اما متاسفانه باز هم نشد

این یک قسمتی از لاگکت هست شاید کمکی کنه

java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.String.substring(int, int)' on a null object reference
        at com.recycleview.ContactAdapter$ContactViewHolder.bincontact(ContactAdapter.java:64)
        at com.recycleview.ContactAdapter.onBindViewHolder(ContactAdapter.java:46)
        at com.recycleview.ContactAdapter.onBindViewHolder(ContactAdapter.java:12)
محمد ۰۵ اردیبهشت ۱۴۰۱، ۰۲:۳۲

کل لاگکت

2022-04-25 07:02:48.875 18133-18133/com.recycleview E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.recycleview, PID: 18133
    java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.String.substring(int, int)' on a null object reference
        at com.recycleview.ContactAdapter$ContactViewHolder.bincontact(ContactAdapter.java:64)
        at com.recycleview.ContactAdapter.onBindViewHolder(ContactAdapter.java:46)
        at com.recycleview.ContactAdapter.onBindViewHolder(ContactAdapter.java:12)
        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:22844)
        at android.view.ViewGroup.layout(ViewGroup.java:6389)
        at androidx.constraintlayout.widget.ConstraintLayout.onLayout(ConstraintLayout.java:1873)
        at android.view.View.layout(View.java:22844)
        at android.view.ViewGroup.layout(ViewGroup.java:6389)
        at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332)
        at android.widget.FrameLayout.onLayout(FrameLayout.java:270)
        at android.view.View.layout(View.java:22844)
        at android.view.ViewGroup.layout(ViewGroup.java:6389)
        at androidx.appcompat.widget.ActionBarOverlayLayout.onLayout(ActionBarOverlayLayout.java:536)
        at android.view.View.layout(View.java:22844)
        at android.view.ViewGroup.layout(ViewGroup.java:6389)
        at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332)
        at android.widget.FrameLayout.onLayout(FrameLayout.java:270)
        at android.view.View.layout(View.java:22844)
        at android.view.ViewGroup.layout(ViewGroup.java:6389)
        at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1829)
        at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1673)
        at android.widget.LinearLayout.onLayout(LinearLayout.java:1582)
        at android.view.View.layout(View.java:22844)
        at android.view.ViewGroup.layout(ViewGroup.java:6389)
        at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332)
        at android.widget.FrameLayout.onLayout(FrameLayout.java:270)
        at com.android.internal.policy.DecorView.onLayout(DecorView.java:784)
        at android.view.View.layout(View.java:22844)
        at android.view.ViewGroup.layout(ViewGroup.java:6389)
        at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:3470)
        at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2938)
        at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1952)
        at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:8171)
        at android.view.Choreographer$CallbackRecord.run(Choreographer.java:972)
        at android.view.Choreographer.doCallbacks(Choreographer.java:796)
        at android.view.Choreographer.doFrame(Choreographer.java:731)
        at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:957)
        at android.os.Handler.handleCallback(Handler.java:938)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:223)
2022-04-25 07:02:48.875 18133-18133/com.recycleview E/AndroidRuntime:     at android.app.ActivityThread.main(ActivityThread.java:7656)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
محمد ۰۵ اردیبهشت ۱۴۰۱، ۰۲:۳۳

سلام وقت بخیر


شما پراپرتی هاتون رو داخل Inner class تون تعریف نکردید

private TextView firstCharacterTv;
private TextView fullnameTv;

به محل تعریف این موارد دقت کنید


کدی که فرستادم کد صحیح هست

چک کنید اگر باز هم نشد یه break point روی خط زیر بذارید و ببینید چرا دیتای نال دریافت میکنید اگر باز هم نشد بگید تا با هم بررسی کنیم

firstCharacterTv.setText(fullname.substring(0, 1));


بهترین پاسخ
پوریا شفیعی ۰۵ اردیبهشت ۱۴۰۱، ۱۳:۰۵

سلام وقت بخیر ، ممنون از پاسخگوییتون مشکل حل شد

محمد ۰۵ اردیبهشت ۱۴۰۱، ۱۳:۲۳