2016-07-22 49 views
0

我正在實施無盡的recyclerView並使用this庫進行刷卡。我面臨的問題是一次有多個項目在recyclerview中刷卡。如果我拖動recyclerview的第二個視圖,並且如果第一個視圖打開,那麼它應該是隱藏意味着只有recyclerview中的一個項目顯示同一時間。下面是我的適配器android:在回收站中一次刷一個項目

public class Adapter<T> extends RecyclerView.Adapter<RecyclerView.ViewHolder> { 

    private final int VIEW_ITEM = 1; 
    private final int VIEW_PROG = 0; 
    private List<MyModel> mDataset; 

    // The minimum amount of items to have below your current scroll position before loading more. 
    private int visibleThreshold = 2; 
    private int lastVisibleItem, totalItemCount; 
    private boolean loading; 
    private OnLoadMoreListener onLoadMoreListener; 

    private Context context; 

    public Adapter(List<MyModel> myDataSet, RecyclerView recyclerView) { 
     mDataset = myDataSet; 

     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; 
        } 
       } 
      }); 
     } 
    } 

    @Override 
    public int getItemViewType(int position) { 
     return mDataset.get(position) != null ? VIEW_ITEM : VIEW_PROG; 
    } 

    @Override 
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
     RecyclerView.ViewHolder vh; 
     if (viewType == VIEW_ITEM) { 
      View itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.movie_list_row, parent, false); 

      vh = new TextViewHolder(itemView); 
     } else { 
      View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.progressbar_item, parent, false); 
      vh = new ProgressViewHolder(v); 
     } 
     return vh; 
    } 

    @Override 
    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { 
     if (holder instanceof TextViewHolder) { 
      MyModel model = mDataset.get(position); 

      ((TextViewHolder) holder).tvFname.setText(model.getStrFname()); 
      ((TextViewHolder) holder).tvLname.setText(model.getStrLname()); 

//   SwipeItemRecyclerMangerImpl mItemManger = new SwipeItemRecyclerMangerImpl(Adapter.this); 
//   mItemManger.bindView(holder.itemView, position); 
     } 

     else { 
      ((ProgressViewHolder) holder).progressBar.setIndeterminate(true); 
     } 
    } 

    public void setLoaded() { 
     loading = false; 
    } 

    @Override 
    public int getItemCount() { 
     return mDataset.size(); 
    } 

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

    public interface OnLoadMoreListener { 
     void onLoadMore(); 
    } 

    public static class TextViewHolder extends RecyclerView.ViewHolder { 
     public TextView tvFname, tvLname; 

     public TextViewHolder(View v) { 
      super(v); 

      tvFname = (TextView) v.findViewById(R.id.tvName); 
      tvLname = (TextView) v.findViewById(R.id.tvEmailId); 
     } 
    } 

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

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

這是我MainActivity

public class MainActivity extends AppCompatActivity { 

    private RecyclerView mRecyclerView; 
    public SearchView search; 
    private ArrayList<MyModel> arrayList = new ArrayList<MyModel>(); 
    private Adapter mAdapter; 
    protected Handler handler; 
    private MyModel model; 
    int test=1; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     setRecycler(); 
    } 

    private void setRecycler() { 

     RecyclerView mRecyclerView = (RecyclerView) findViewById(R.id.recycler_view); 
     createlist(); // in this method, Create a list of items. 
     mRecyclerView.setHasFixedSize(true); 
     mRecyclerView.setLayoutManager(new LinearLayoutManager(this)); 

     //add devider to recycleview. 
     mRecyclerView.addItemDecoration(new SimpleDividerItemDecoration(getApplicationContext())); 

     mAdapter = new Adapter(arrayList, mRecyclerView); 
     mRecyclerView.setAdapter(mAdapter); 
     handler = new Handler(); 

     mAdapter.setOnLoadMoreListener(new Adapter.OnLoadMoreListener() { 
      @Override 
      public void onLoadMore() { 
       //add progress item 
       arrayList.add(null); 
       mAdapter.notifyItemInserted(arrayList.size() - 1); 

       handler.postDelayed(new Runnable() { 
        @Override 
        public void run() { 
         //remove progress item 
         arrayList.remove(arrayList.size() - 1); 
         mAdapter.notifyItemRemoved(arrayList.size()); 
         //add items one by one 
//       arrayList.add("Item " + (arrayList.size() + 1)); 
         createlist(); 

         mAdapter.notifyItemInserted(arrayList.size()); 
         mAdapter.setLoaded(); 
         //or you can add all at once but do not forget to call mAdapter.notifyDataSetChanged(); 
        } 
       }, 2000); 
       System.out.println("load"); 
      } 
     }); 
    } 

    // this method is used to create list of items. 
    public void createlist() { 
     for (int i = 1; i <= 20; i++) { 
      model = new MyModel(); 
      model.setStrFname("Testing"+test); 
      model.setStrLname("Testing"+i+"@gmail.com"); 
      arrayList.add(model); 
      test++; 
     } 
    } 

} 

enter image description here

+0

可能重複[一次滑動一個項目Recyclerview](http://stackoverflow.com/questions/32324926/swipe-one-item-at-a-time-recyclerview) –

回答

相關問題