2017-02-06 28 views
12

Tôi đang phát triển một ứng dụng android mà có một màn hình chứa những điều sau đây:Kéo Xem và thả nó vào RecyclerView mục Android

  1. Recycler xem có chứa loại như hình bên dưới
  2. xem riêng tại botton và người dùng có thể kéo nó trên một mục RecyclerView và sau khi thả người dùng sẽ hiển thị thay đổi tại dữ liệu mục RecyclerView (ví dụ: các mục đếm ở danh mục)

Tôi cần một số trợ giúp về cách triển khai quy trình này để kéo View vào Recycler mục, hình sau đây giải thích chính xác những gì tôi muốn làm nhưng không có ý tưởng làm thế nào để làm điều đó

enter image description here

bất kỳ sự giúp đỡ được nhiều đánh giá

Trả lời

7

Bắt đầu bằng cách thêm một draglistener để chế độ xem thổi phồng của bạn ở onCreateViewHolder của bộ điều hợp máy tái chế.

view.setOnDragListener(new OnDragListener() { 
     @Override 
     public boolean onDrag(View view, DragEvent dragEvent) { 

      switch (dragEvent.getAction()) { 
       case DragEvent.ACTION_DRAG_STARTED: 
        // drag has started, return true to tell that you're listening to the drag 
        return true; 

       case DragEvent.ACTION_DROP: 
        // the dragged item was dropped into this view 
        Category a = items.get(getAdapterPosition()); 
        a.setText("dropped"); 
        notifyItemChanged(getAdapterPosition()); 
        return true; 
       case DragEvent.ACTION_DRAG_ENDED: 
        // the drag has ended 
        return false; 
      } 
      return false; 
     } 
    }); 

Trong trường hợp ACTION_DROP bạn có thể thay đổi mô hình và gọi notifyItemChanged(), hoặc sửa đổi trực tiếp xem (mà sẽ không xử lý các trường hợp rebinding). Cũng trong onCreateViewHolder thêm một longClickListener-View của bạn, và trong onLongClick bắt đầu kéo:

ClipData.Item item = new ClipData.Item((CharSequence) view.getTag()); 
    String[] mimeTypes = {ClipDescription.MIMETYPE_TEXT_PLAIN}; 
    ClipData dragData = new ClipData(view.getTag().toString(), 
      mimeTypes, item); 
    view.setVisibility(View.GONE); 
    HeptagonDragShadowBuilder myShadow = new HeptagonDragShadowBuilder(Heptagon.this, 1.1f); 

    if (VERSION.SDK_INT >= VERSION_CODES.N) { 
     view.startDragAndDrop(dragData, myShadow, null, 0); 
    } else { 
     view.startDrag(dragData, myShadow, null, 0); 
    } 

Để biết thêm thông tin về kéo và thả kiểm tra android developers site

+1

Cảm ơn rất nhiều, có vẻ Greate, nhưng tôi có câu hỏi đơn giản làm thế nào để có được vị trí xem bộ chuyển đổi? Cảm ơn –

+1

với 'viewholder.getAdapterPosition()' –

+0

bạn được chào đón ^^ –

Các vấn đề liên quan