0
点赞
收藏
分享

微信扫一扫

Android侧滑显示删除

Android侧滑显示删除

在很多的移动应用中,我们经常会遇到需要通过侧滑操作来进行删除或其他相关操作的场景。这种交互方式相对于传统的按钮点击或长按操作更加方便和直观,也更符合用户的习惯。在Android开发中,实现侧滑显示删除功能可以使用RecyclerViewItemTouchHelper来实现。

实现步骤

  1. 创建一个新的Android项目,添加RecyclerView的依赖。

    implementation 'androidx.recyclerview:recyclerview:1.2.0'
    
  2. 创建一个新的布局文件item_list.xml,用于显示列表项的布局。

    <LinearLayout xmlns:android="
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:orientation="horizontal">
    
         <TextView
             android:id="@+id/item_text"
             android:layout_width="0dp"
             android:layout_height="wrap_content"
             android:layout_weight="1"
             android:textSize="16sp"
             android:padding="8dp" />
    
         <Button
             android:id="@+id/delete_button"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:text="删除" />
     </LinearLayout>
    
  3. 创建一个新的RecyclerView的适配器ItemAdapter

    class ItemAdapter(private val items: List<String>) : RecyclerView.Adapter<ItemAdapter.ViewHolder>() {
    
        override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
            val view = LayoutInflater.from(parent.context).inflate(R.layout.item_list, parent, false)
            return ViewHolder(view)
        }
    
        override fun onBindViewHolder(holder: ViewHolder, position: Int) {
            val item = items[position]
            holder.itemView.findViewById<TextView>(R.id.item_text).text = item
        }
    
        override fun getItemCount(): Int {
            return items.size
        }
    
        inner class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView)
    }
    
  4. MainActivity中添加RecyclerView并设置适配器。

    class MainActivity : AppCompatActivity() {
    
        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            setContentView(R.layout.activity_main)
    
            val items = listOf("Item 1", "Item 2", "Item 3", "Item 4", "Item 5")
            val recyclerView = findViewById<RecyclerView>(R.id.recycler_view)
            recyclerView.layoutManager = LinearLayoutManager(this)
            recyclerView.adapter = ItemAdapter(items)
        }
    }
    
  5. 添加ItemTouchHelper来处理侧滑删除操作。

    val itemTouchHelper = ItemTouchHelper(object : ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.LEFT or ItemTouchHelper.RIGHT) {
        override fun onMove(recyclerView: RecyclerView, viewHolder: RecyclerView.ViewHolder, target: RecyclerView.ViewHolder): Boolean {
            return false
        }
    
        override fun onSwiped(viewHolder: RecyclerView.ViewHolder, direction: Int) {
            val position = viewHolder.adapterPosition
            items.removeAt(position)
            recyclerView.adapter?.notifyItemRemoved(position)
        }
    })
    itemTouchHelper.attachToRecyclerView(recyclerView)
    

效果演示

下面是运行效果演示:

journey
    title 实现侧滑显示删除功能
    section 创建项目
    section 创建布局文件
    section 创建适配器
    section 设置RecyclerView
    section 添加ItemTouchHelper

类图

下面是相关类的类图:

class MainActivity {
    - List<String> items
    - RecyclerView recyclerView
    - ItemTouchHelper itemTouchHelper
    + void onCreate(Bundle savedInstanceState)
}

class ItemAdapter {
    - List<String> items
    - View itemView
    + ItemAdapter(List<String> items)
    + ViewHolder onCreateViewHolder(ViewGroup parent, int viewType)
    + void onBindViewHolder(ViewHolder holder, int position)
    + int getItemCount()
}

class ItemTouchHelper {
    - SimpleCallback simpleCallback
    + ItemTouchHelper(SimpleCallback simpleCallback)
    + void attachToRecyclerView(RecyclerView recyclerView)
    + void onMove(RecyclerView recyclerView, ViewHolder viewHolder, ViewHolder target)
    + void onSwiped(ViewHolder viewHolder, int direction)
}

class ViewHolder {
    - View itemView
    + ViewHolder(View itemView)
}

总结

通过使用RecyclerViewItemTouchHelper,我们可以很方便地实现侧滑显示删除功能。这种交互方式不仅能提高用户体验,还能提升应用的可用性和效率。希望本篇文章能对你有所帮助,欢迎大家在评论区留言讨论。

举报

相关推荐

0 条评论