2016-07-22 1 views
1

У меня возникла проблема. Я работаю с recyclerview. Я хочу, чтобы сообщение списка обновлялось. Когда пользователи прокручиваются вниз и когда они прокручиваются влево, программа вызывает функцию удаления почты. И, прокручивая вправо, программа вызывает обновление функции post. Я написал коды ниже. Не могли бы вы объяснить с примерами, как я могу это сделать? Я написал эти функции, но я потерпел неудачу.Как обновить, удалить, ... после прокрутки вниз, вверх, вправо и влево в recyclerview

CustomListAdapterForPostOrga

public class CustomListAdapterForPostOrgan extends BaseAdapter { 

private Activity activity; 
private LayoutInflater inflater; 
private List<Posts> post; 
private int visibleThreshold = 5; 
private int lastVisibleItem, totalItemCount; 
private boolean loading; 
private OnLoadMoreListener onLoadMoreListener; 

ImageLoader imageLoader = AppController.getInstance().getImageLoader(); 


    public CustomListAdapterForPostOrgan(Activity activity, List<Posts> post) { 
    this.activity = activity; 
    this.post = post; 
    } 



    public CustomListAdapterForPostOrgan(List<Posts> post, RecyclerView recyclerView) { 

     this.post = post; 

     if (recyclerView.getLayoutManager() instanceof LinearLayoutManager) { 

     final LinearLayoutManager linearLayoutManager = (LinearLayoutManager) recyclerView 
      .getLayoutManager(); 


      recyclerView 
      .addOnScrollListener(new RecyclerView.OnScrollListener() { 
       @Override 
       public void onScrolled(RecyclerView recyclerView, 
             int dx, int dy) { 
        super.onScrolled(recyclerView, dx, dy); 

        totalItemCount = linearLayoutManager.getItemCount(); 
        lastVisibleItem = linearLayoutManager 
          .findLastVisibleItemPosition(); 
        if (!loading 
          && totalItemCount <= (lastVisibleItem + visibleThreshold)) { 
         // End has been reached 
         // Do something 
         if (onLoadMoreListener != null) { 
          onLoadMoreListener.onLoadMore(); 
         } 
         loading = true; 
        } 
       } 
      }); 
}} 

public void setOnLoadMoreListener(OnLoadMoreListener onLoadMoreListener) { 
    this.onLoadMoreListener = onLoadMoreListener; 
} 

/////////////////// 
@Override 
public int getCount() { 
    return post.size(); 
} 

@Override 
public Object getItem(int location) { 
    return post.get(location); 
} 

@Override 
public long getItemId(int position) { 
    return position; 
} 

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    View v=convertView; 
    if (inflater == null) 
     inflater = (LayoutInflater) activity 
       .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    if (convertView == null) 
     convertView = inflater.inflate(R.layout.list_row_organ_news 
       , null); 



    if (imageLoader == null) 
     imageLoader = AppController.getInstance().getImageLoader(); 
    NetworkImageView thumbNail = (NetworkImageView) convertView 
      .findViewById(R.id.organ_news__avatar_show_thumbnail); 
    TextView titr = (TextView) convertView.findViewById(R.id.txt_organ_news_list_organ); 
    TextView year = (TextView) convertView.findViewById(R.id.txt_date_posts_organ); 
    TextView fi = (TextView) convertView.findViewById(R.id.txt_cunter_for_organ_posts); 

    // getting billionaires data for the row 
    Posts m = post.get(position); 

    // thumbnail image 
    thumbNail.setImageUrl(m.getAvatar(), imageLoader); 




    // Wealth Source 
    year.setText("Wealth Source: " + String.valueOf(m.getPublish_at())); 


    titr.setText(String.valueOf(m.getTitle())); 

    // release year 
    year.setText(String.valueOf(m.getPublish_at())); 
    fi.setText(String.valueOf(m.getView_count())); 

    return convertView; 
} 
    public static class ProgressViewHolder extends RecyclerView.ViewHolder { 
    public ProgressBar progressBar; 

    public ProgressViewHolder(View v) { 
     super(v); 
     progressBar = (ProgressBar) v.findViewById(R.id.progressBar1); 
    } 
} 

в главной функции:

private void handelpost(final List<Post> posts, Page pages) { 

    if (pages.getCurrentPage() > 1) { 

    } else { 

     recycler_post.setLayoutManager(new LinearLayoutManager(this)); 
     final AdapterRcycelerViewPostOrgan 
       madapter = new 
       AdapterRcycelerViewPostOrgan(posts); 
     recycler_post.setAdapter(madapter); 
     recycler_post.setItemAnimator(new DefaultItemAnimator()); 
     madapter.setOnLoadMoreListener(new OnLoadMoreListener() { 
      @Override 
      public void onLoadMore() { 
       posts.add(null); 
       madapter.notifyItemInserted(posts.size() - 1); 
       handler.postDelayed(new Runnable() { 
        @Override 
        public void run() { 
         // remove progress item 
         posts.remove(posts.size() - 1); 
         madapter.notifyItemRemoved(posts.size()); 
         //add items one by one 
         int start = posts.size(); 
         int end = start + 20; 

        /*  for (int i = start + 1; i <= end; i++) { 
          studentList.add(new Student("Student " + i, "AndroidStudent" + i + "@gmail.com")); 
          mAdapter.notifyItemInserted(studentList.size()); 
         }*/ 
        //  posts.set() 
         //or you can add all at once but do not forget to call mAdapter.notifyDataSetChanged(); 
        } 
       }, 2000); 

       Toast.makeText(getApplicationContext(),"ok",Toast.LENGTH_LONG).show(); 
      } 
     }); 

    } 

Я хочу знать, как я могу сделать эту функцию на своих списках. Пожалуйста, помогите мне.

ответ

0

В обратном вызове onScrolled у вас есть dx и dy. Если список dy> 0 прокручивается вниз, и если dy < 0 его прокручивается. То же самое с dx, только другая ось

Смежные вопросы