• 18-01-2025, 14:54:51
    #1
    Merhaba Android java tabanında bir uygulama geliştiriyorum
    Recyclerview e addOnScrollListener atayınca uygulama çöküyor
    Hata Kaynağı
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.davulgablog/com.example.davulgablog.view.Makaleler}: java.lang.NullPointerException: Attempt to invoke virtual method 'void androidx.recyclerview.widget.RecyclerView.addOnScrollListener(androidx.recyclerview.widget.RecyclerView$OnScrollListener)' on a null object reference at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3764)
    Makaleler sınıfım
    import androidx.annotation.Nullable;
    import androidx.appcompat.app.AppCompatActivity;
    import androidx.recyclerview.widget.GridLayoutManager;
    import androidx.recyclerview.widget.LinearLayoutManager;
    import androidx.recyclerview.widget.RecyclerView;
    
    import com.example.davulgablog.R;
    import com.example.davulgablog.adapter.AnasayfaAdapter;
    import com.example.davulgablog.adapter.MakalelerAdapter;
    import com.example.davulgablog.api.ContentsApi;
    import com.example.davulgablog.databinding.MakalelerBinding;
    import com.example.davulgablog.model.AnasayfaButton;
    import com.example.davulgablog.service.Contents;
    import com.google.gson.Gson;
    import com.google.gson.GsonBuilder;
    
    import java.util.ArrayList;
    import java.util.List;
    
    import io.reactivex.android.schedulers.AndroidSchedulers;
    import io.reactivex.disposables.CompositeDisposable;
    import io.reactivex.schedulers.Schedulers;
    import retrofit2.Retrofit;
    import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory;
    import retrofit2.converter.gson.GsonConverterFactory;
    
    public class Makaleler extends AppCompatActivity {
    ArrayList<ContentsApi> contents;
    AnasayfaAdapter buttonAdapter;
    private String BASE_URL = "https://aa.com.tr/";
    Retrofit retrofit;
    RecyclerView recyclerView;
    MakalelerBinding contentContext;
    MakalelerAdapter contentsAdp;
    CompositeDisposable compositeDisposable;
    protected void onCreate(@Nullable Bundle savedInstanceState) {
    contentContext=MakalelerBinding.inflate(getLayoutInflater());
    super.onCreate(savedInstanceState);
    
    ArrayList<AnasayfaButton> btnlist=new ArrayList<>();
    btnlist.add(new AnasayfaButton("Makaleler","btncontent",R.drawable.news));
    btnlist.add(new AnasayfaButton("Köyümüz","btnLand",R.drawable.explore));
    btnlist.add(new AnasayfaButton("Etkinlikler","btnEvent",R.drawable.event));
    btnlist.add(new AnasayfaButton("Foto Galeri","btngallery",R.drawable.photo));
    btnlist.add(new AnasayfaButton("Video Galeri","btnVid",R.drawable.video_play));
    btnlist.add(new AnasayfaButton("Derneğimiz","btnDernek",R.drawable.nature));
    btnlist.add(new AnasayfaButton("Sayfalar","btnLayer",R.drawable.layer));
    btnlist.add(new AnasayfaButton("İletişim","btnContact",R.drawable.messsage));
    btnlist.add(new AnasayfaButton("Hakkında","btnAbout",R.drawable.android));
    
    buttonAdapter=new AnasayfaAdapter(btnlist);
    contentContext.sliderRecycler.setLayoutManager(new GridLayoutManager(Makaleler.this,1, LinearLayoutManager.HORIZONTAL, false));
    contentContext.sliderRecycler.setAdapter(buttonAdapter);
    recyclerView = findViewById(R.id.content_Recycler);
    Gson gson = new GsonBuilder().setLenient().create();
    
    retrofit = new Retrofit.Builder()
    .baseUrl(BASE_URL)
    .addConverterFactory(GsonConverterFactory.create(gson))
    .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
    .build();
    loadData();
    setContentView(contentContext.getRoot());
    recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
    
    public void onScrolled(RecyclerView recyclerView,int dx , int dy) {
    super.onScrolled(recyclerView, dx, dy);
    Log.i("cc","Scrolled");
    
    
    }
    });
    
    }
    }
    Hatam nerde sizce?
  • 18-01-2025, 14:57:13
    #2
    Merhaba, sayfayı çizdirmeden recyclerview ataması yaptığınız için hata alıyorsunuz. setContentView(contentContext.getRoot()); bu satırı super.onCreate kısmının altına alın.

    import androidx.annotation.Nullable;
    import androidx.appcompat.app.AppCompatActivity;
    import androidx.recyclerview.widget.GridLayoutManager;
    import androidx.recyclerview.widget.LinearLayoutManager;
    import androidx.recyclerview.widget.RecyclerView;
     
    import com.example.davulgablog.R;
    import com.example.davulgablog.adapter.AnasayfaAdapter;
    import com.example.davulgablog.adapter.MakalelerAdapter;
    import com.example.davulgablog.api.ContentsApi;
    import com.example.davulgablog.databinding.MakalelerBinding;
    import com.example.davulgablog.model.AnasayfaButton;
    import com.example.davulgablog.service.Contents;
    import com.google.gson.Gson;
    import com.google.gson.GsonBuilder;
     
    import java.util.ArrayList;
    import java.util.List;
     
    import io.reactivex.android.schedulers.AndroidSchedulers;
    import io.reactivex.disposables.CompositeDisposable;
    import io.reactivex.schedulers.Schedulers;
    import retrofit2.Retrofit;
    import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory;
    import retrofit2.converter.gson.GsonConverterFactory;
     
    public class Makaleler extends AppCompatActivity {
    ArrayList<ContentsApi> contents;
    AnasayfaAdapter buttonAdapter;
    private String BASE_URL = "https://aa.com.tr/";
    Retrofit retrofit;
    RecyclerView recyclerView;
    MakalelerBinding contentContext;
    MakalelerAdapter contentsAdp;
    CompositeDisposable compositeDisposable;
    protected void onCreate(@Nullable Bundle savedInstanceState) {
    contentContext=MakalelerBinding.inflate(getLayoutInflater());
    super.onCreate(savedInstanceState);
    setContentView(contentContext.getRoot());
    
    ArrayList<AnasayfaButton> btnlist=new ArrayList<>();
    btnlist.add(new AnasayfaButton("Makaleler","btncontent",R.drawable.news));
    btnlist.add(new AnasayfaButton("Köyümüz","btnLand",R.drawable.explore));
    btnlist.add(new AnasayfaButton("Etkinlikler","btnEvent",R.drawable.event));
    btnlist.add(new AnasayfaButton("Foto Galeri","btngallery",R.drawable.photo));
    btnlist.add(new AnasayfaButton("Video Galeri","btnVid",R.drawable.video_play));
    btnlist.add(new AnasayfaButton("Derneğimiz","btnDernek",R.drawable.nature));
    btnlist.add(new AnasayfaButton("Sayfalar","btnLayer",R.drawable.layer));
    btnlist.add(new AnasayfaButton("İletişim","btnContact",R.drawable.messsage));
    btnlist.add(new AnasayfaButton("Hakkında","btnAbout",R.drawable.android));
     
    buttonAdapter=new AnasayfaAdapter(btnlist);
    contentContext.sliderRecycler.setLayoutManager(new GridLayoutManager(Makaleler.this,1, LinearLayoutManager.HORIZONTAL, false));
    contentContext.sliderRecycler.setAdapter(buttonAdapter);
    recyclerView = findViewById(R.id.content_Recycler);
    Gson gson = new GsonBuilder().setLenient().create();
     
    retrofit = new Retrofit.Builder()
    .baseUrl(BASE_URL)
    .addConverterFactory(GsonConverterFactory.create(gson))
    .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
    .build();
    loadData();
    
    recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
     
    public void onScrolled(RecyclerView recyclerView,int dx , int dy) {
    super.onScrolled(recyclerView, dx, dy);
    Log.i("cc","Scrolled");
     
     
    }
    });
     
    }
    }
  • 18-01-2025, 16:40:51
    #3
    kzlsnn adlı üyeden alıntı: mesajı görüntüle
    Merhaba, sayfayı çizdirmeden recyclerview ataması yaptığınız için hata alıyorsunuz. setContentView(contentContext.getRoot()); bu satırı super.onCreate kısmının altına alın.

    import androidx.annotation.Nullable;
    import androidx.appcompat.app.AppCompatActivity;
    import androidx.recyclerview.widget.GridLayoutManager;
    import androidx.recyclerview.widget.LinearLayoutManager;
    import androidx.recyclerview.widget.RecyclerView;
     
    import com.example.davulgablog.R;
    import com.example.davulgablog.adapter.AnasayfaAdapter;
    import com.example.davulgablog.adapter.MakalelerAdapter;
    import com.example.davulgablog.api.ContentsApi;
    import com.example.davulgablog.databinding.MakalelerBinding;
    import com.example.davulgablog.model.AnasayfaButton;
    import com.example.davulgablog.service.Contents;
    import com.google.gson.Gson;
    import com.google.gson.GsonBuilder;
     
    import java.util.ArrayList;
    import java.util.List;
     
    import io.reactivex.android.schedulers.AndroidSchedulers;
    import io.reactivex.disposables.CompositeDisposable;
    import io.reactivex.schedulers.Schedulers;
    import retrofit2.Retrofit;
    import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory;
    import retrofit2.converter.gson.GsonConverterFactory;
     
    public class Makaleler extends AppCompatActivity {
    ArrayList<ContentsApi> contents;
    AnasayfaAdapter buttonAdapter;
    private String BASE_URL = "https://aa.com.tr/";
    Retrofit retrofit;
    RecyclerView recyclerView;
    MakalelerBinding contentContext;
    MakalelerAdapter contentsAdp;
    CompositeDisposable compositeDisposable;
    protected void onCreate(@Nullable Bundle savedInstanceState) {
    contentContext=MakalelerBinding.inflate(getLayoutInflater());
    super.onCreate(savedInstanceState);
    setContentView(contentContext.getRoot());
    
    ArrayList<AnasayfaButton> btnlist=new ArrayList<>();
    btnlist.add(new AnasayfaButton("Makaleler","btncontent",R.drawable.news));
    btnlist.add(new AnasayfaButton("Köyümüz","btnLand",R.drawable.explore));
    btnlist.add(new AnasayfaButton("Etkinlikler","btnEvent",R.drawable.event));
    btnlist.add(new AnasayfaButton("Foto Galeri","btngallery",R.drawable.photo));
    btnlist.add(new AnasayfaButton("Video Galeri","btnVid",R.drawable.video_play));
    btnlist.add(new AnasayfaButton("Derneğimiz","btnDernek",R.drawable.nature));
    btnlist.add(new AnasayfaButton("Sayfalar","btnLayer",R.drawable.layer));
    btnlist.add(new AnasayfaButton("İletişim","btnContact",R.drawable.messsage));
    btnlist.add(new AnasayfaButton("Hakkında","btnAbout",R.drawable.android));
     
    buttonAdapter=new AnasayfaAdapter(btnlist);
    contentContext.sliderRecycler.setLayoutManager(new GridLayoutManager(Makaleler.this,1, LinearLayoutManager.HORIZONTAL, false));
    contentContext.sliderRecycler.setAdapter(buttonAdapter);
    recyclerView = findViewById(R.id.content_Recycler);
    Gson gson = new GsonBuilder().setLenient().create();
     
    retrofit = new Retrofit.Builder()
    .baseUrl(BASE_URL)
    .addConverterFactory(GsonConverterFactory.create(gson))
    .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
    .build();
    loadData();
    
    recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
     
    public void onScrolled(RecyclerView recyclerView,int dx , int dy) {
    super.onScrolled(recyclerView, dx, dy);
    Log.i("cc","Scrolled");
     
     
    }
    });
     
    }
    }
    Sayfada kaç içerik olduğunu ve sona geldiğimi nasıl çözümleyebilirim? bu konuda yardım edebilir misiniz?
    Basit yapmak istediğim anlatayım veritabanında 40 sayfada 10 içerik var diyelim ben sayfa sonuna geldiğimde sayfadaki içerik sayısını alıp sunucuya göndermem gerekiyor ve bir adette yükleniyor gifi göstereceğim