如何在sectionedrecyclerview上点击页脚后加载更多数据?

时间:2016-12-26 08:27:00

标签: android

我在我的应用上使用了sectioned recyclerview。当一段Recyclerview的页脚点击时,我试图加载更多数据... sectionedrecyclerview就像这里:https://gist.github.com/gabrielemariotti/4c189fb1124df4556058

我的代码是这样的:

class NewsSection_VideoHaber extends StatelessSection {
        String title;
        List<Haber> list;


        public NewsSection_VideoHaber() {
            super(R.layout.baslik_videohatti, R.layout.footer_videohaberhatti, R.layout.kategorili_haber_item);
            this.title = "";
            this.list = getNews();



        }

        private List<Haber> getNews() {
            List<Haber> hnm=new ArrayList<Haber>();
            try {
                hnm= new sunucudanGetirVideo().execute().get();
            } catch (InterruptedException e) {
                e.printStackTrace();
            } catch (ExecutionException e) {
                e.printStackTrace();
            }
            return hnm;
        }

        @Override
        public int getContentItemsTotal() {
            return list.size();
        }

        @Override
        public RecyclerView.ViewHolder getItemViewHolder(View view) {
            return new ItemViewHolder(view);
        }

        @Override
        public void onBindItemViewHolder(RecyclerView.ViewHolder holder, int position) {
            final ItemViewHolder itemHolder = (ItemViewHolder) holder;
            final int pos=position;

            TextView basliktv = (TextView)  itemHolder.rootView.findViewById(R.id.haberBaslik);
            basliktv.setText(list.get(position).getBaslik().toUpperCase());

            ImageView resim = (ImageView) itemHolder.rootView.findViewById(R.id.haberResim);

            if(list.get(position).getResimurl().equals("null")){
                resim.setImageResource(R.drawable.ic_empty);
            }else{

                if(list.get(position).getVideo()==0) {

                    Picasso.with(getActivity())
                            .load(MainActivity.resimKucukUrl + list.get(position).getResimurl())
                            .resize(800, 0)

                            .into(resim);
                }else {

                    Picasso.with(getActivity())
                            .load(MainActivity.resimKucukUrl + list.get(position).getResimurl())
                            .into(resim);
                }

                Log.d("Haber Adapt:",list.get(position).toString());
            }

            itemHolder.rootView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {

                    if(list.get(pos).getVideo()==1){
                        Intent myIntent = new Intent(getActivity(), videoHaberDetay.class);
                        Log.d("Kategorili haber","Seçilen video haber id:"+list.get(pos).getId());
                        myIntent.putExtra("haberId",""+ list.get(pos).getId());
                        startActivityForResult(myIntent, 0);
                    }else{
                        Intent myIntent = new Intent(getActivity(), haber_detay.class);
                        Log.d("Kategorili haber","Seçilen haber id:"+list.get(pos).getId());
                        myIntent.putExtra("haberId",""+ list.get(pos).getId());
                        startActivityForResult(myIntent, 0);
                    }

                }
            });
        }

        @Override
        public RecyclerView.ViewHolder getHeaderViewHolder(View view) {
            return new HeaderViewHolder(view);
        }

        @Override
        public void onBindHeaderViewHolder(RecyclerView.ViewHolder holder) {

        }

        @Override
        public RecyclerView.ViewHolder getFooterViewHolder(View view) {
            return new FooterViewHolder(view);
        }

        @Override
        public void onBindFooterViewHolder(RecyclerView.ViewHolder holder) {
            FooterViewHolder footerHolder = (FooterViewHolder) holder;

            footerHolder.rootView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    int sayi=list.size();
                    List<Haber> load=new ArrayList<Haber>();
                    try {
                        load= new sunucudanGetirVideoLoad(sayi).execute().get();
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    } catch (ExecutionException e) {
                        e.printStackTrace();
                    }
                    for(int i=0;i<load.size();i++){

                        list.add(load.get(i));

                    }
                    int xmm=list.size();
                    Toast.makeText(getActivity().getBaseContext(), String.format("Clicked on footer of Section %s", xmm), Toast.LENGTH_SHORT).show();
                }
            });
        }
    }

所以我添加到列表后绑定项目... Arraylist项目将被添加到recyclerview,但如何?我知道我应该调用onBindItemViewHolder方法但是如何发送持有人?

2 个答案:

答案 0 :(得分:0)

这是我在包装器类中使用的内容:

public void add(@NonNull E object) {
        objects.add(object);
        if (objects.size() > 1)
            notifyItemInserted(objects.size() - 1);
        else
            notifyDataSetChanged();
    }

答案 1 :(得分:0)

我做了yehuuuuu:D看看我的代码家伙:)

 public void onBindFooterViewHolder(RecyclerView.ViewHolder holder) {
            FooterViewHolder footerHolder = (FooterViewHolder) holder;


            footerHolder.rootView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    int sayi=list.size();
                    List<Haber> load=new ArrayList<Haber>();
                    try {
                        load= new sunucudanGetirHaberLoad(sayi).execute().get();
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    } catch (ExecutionException e) {
                        e.printStackTrace();
                    }
                    for(int i=0;i<load.size();i++){

                        section_anaHaber.addItem (sayi+i,load.get(i));

                    }
                    sectionAdapter.notifyDataSetChanged();

                    int xmm=list.size();
                    Toast.makeText(getActivity().getBaseContext(), String.format("Clicked on footer of Section %s", xmm), Toast.LENGTH_SHORT).show();

                }
            });
        }