【问题标题】:add item to RecyclerView after scrollin down or scrollin up向下滚动或向上滚动后将项目添加到 RecyclerView
【发布时间】:2016-07-21 07:09:21
【问题描述】:

这是我第一次使用在线recyclerview。

我有一些问题:

1.如何区分向上滚动和向下滚动

2.如何使用向上滚动更新我的列表,同时不丢失我的其他项目

3.recyclerview更新后,如何保住位置不回到原点?

我为 recyclerview 编写了这些代码。

CustomListAdapterForPostOrgan

public class AdapterRcycelerViewPersonalOrgan extends RecyclerView.Adapter<AdapterRcycelerViewPersonalOrgan.ViewHolder> {
private List<User> itemsData;
public AdapterRcycelerViewPersonalOrgan(List<User> itemsData) {
    this.itemsData = itemsData;
}

// Create new views (invoked by the layout manager)
@Override
public AdapterRcycelerViewPersonalOrgan.ViewHolder onCreateViewHolder(ViewGroup parent,
                                                                      int viewType) {
    // create a new view
    View itemLayoutView = LayoutInflater.from(parent.getContext())
            .inflate(R.layout.list_row_member_organ, null);

    // create ViewHolder

    ViewHolder viewHolder = new ViewHolder(itemLayoutView);
    return viewHolder;
}

// Replace the contents of a view (invoked by the layout manager)
@Override
public void onBindViewHolder(ViewHolder viewHolder, int position) {
    ImageLoader imageLoader = AppController.getInstance().getImageLoader();
    // - get data from your itemsData at this position
    // - replace the contents of the view with that itemsData
    if (imageLoader == null)
        imageLoader = AppController.getInstance().getImageLoader();

    viewHolder.member__avatar_show_thumbnail.setImageUrl(itemsData.get(position).getAvatar(),imageLoader);
    viewHolder.member_name.setText( itemsData.get(position).getFirst_name()+" "+itemsData.get(position).getLast_name());


}

// inner class to hold a reference to each item of RecyclerView
public static class ViewHolder extends RecyclerView.ViewHolder {

public NetworkImageView member__avatar_show_thumbnail;

public TextView member_name;

    public ViewHolder(View itemLayoutView) {
        super(itemLayoutView);

        member__avatar_show_thumbnail = (NetworkImageView) itemLayoutView.findViewById(R.id.member__avatar_show_thumbnail);
      member_name=(TextView) itemLayoutView.findViewById(R.id.txt_member_name_list_member_organ) ;

    }
}


// Return the size of your itemsData (invoked by the layout manager)
@Override
public int getItemCount() {
    return itemsData.size();
  }
}

之后

 private void memberorganhandel(List<User> userList, Page pages) {

    if(pages.getCurrentPage()>1){

    }else{

        recyclerview_personal_organ .setLayoutManager(new LinearLayoutManager(this));
        AdapterRcycelerViewPersonalOrgan
                madapter=new
                AdapterRcycelerViewPersonalOrgan(userList);
        recyclerview_personal_organ .setAdapter(madapter);
        recyclerview_personal_organ .setItemAnimator(new DefaultItemAnimator());
    }
}

【问题讨论】:

    标签: android performance android-recyclerview add listviewitem


    【解决方案1】:
    • 如何区分向上滚动和向下滚动
    recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
    
        @Override
        public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
             //check if dy > 0 then it's scrolling down, otherwise - up
        }
     });
    
    • 如何使用向上滚动更新我的列表,同时不丢失我的其他项目

    在我的第一个代码片段中的onScrolled 方法内部修改您在适配器中使用的数据源,然后调用notifyItemInserted。文档。

    • 更新recyclerview后,如何才能保住位置,不回到原点?

    请参阅我的第二点。它不应该导致任何滚动。

    【讨论】:

    • 我应该在哪里调用这个函数?我在 oncreate 中写了这个函数,但它不起作用
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-09
    • 1970-01-01
    • 1970-01-01
    • 2015-06-10
    • 2016-10-26
    • 1970-01-01
    相关资源
    最近更新 更多