向下滚动或向上滚动后将项目添加到RecyclerView

时间:2016-07-21 07:09:22

标签: android performance android-recyclerview add listviewitem

这是我第一次使用在线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());
    }
}

1 个答案:

答案 0 :(得分:0)

  • 如何dinstinguish向上滚动并向下滚动
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之后,我如何保持自己的地位并且不会回到第一位?

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