写一个左滑删除效果xml和Java
时间: 2024-03-12 19:44:56 浏览: 67
js左滑删除效果
好的,下面是一个简单的左滑删除效果的实现,包括 XML 布局文件和 Java 代码。
XML 布局文件:
```xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/text_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="16dp"
android:text="这是一条消息" />
<Button
android:id="@+id/delete_button"
android:layout_width="80dp"
android:layout_height="match_parent"
android:layout_alignParentEnd="true"
android:background="@color/red"
android:text="删除"
android:textColor="@android:color/white" />
</RelativeLayout>
```
Java 代码:
```java
public class SwipeToDeleteActivity extends AppCompatActivity {
private List<String> mDataList;
private RecyclerView mRecyclerView;
private MyAdapter mAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_swipe_to_delete);
// 初始化数据
mDataList = new ArrayList<>();
for (int i = 0; i < 20; i++) {
mDataList.add("这是第" + (i + 1) + "条消息");
}
// 初始化 RecyclerView
mRecyclerView = findViewById(R.id.recycler_view);
mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
mAdapter = new MyAdapter();
mRecyclerView.setAdapter(mAdapter);
// 添加 ItemTouchHelper 实现左滑删除
ItemTouchHelper.Callback callback = new ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.LEFT) {
@Override
public boolean onMove(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, @NonNull RecyclerView.ViewHolder target) {
return false;
}
@Override
public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int direction) {
int position = viewHolder.getAdapterPosition();
mDataList.remove(position);
mAdapter.notifyItemRemoved(position);
}
};
ItemTouchHelper itemTouchHelper = new ItemTouchHelper(callback);
itemTouchHelper.attachToRecyclerView(mRecyclerView);
}
class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_message, parent, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
holder.textView.setText(mDataList.get(position));
}
@Override
public int getItemCount() {
return mDataList.size();
}
class ViewHolder extends RecyclerView.ViewHolder {
TextView textView;
Button deleteButton;
ViewHolder(@NonNull View itemView) {
super(itemView);
textView = itemView.findViewById(R.id.text_view);
deleteButton = itemView.findViewById(R.id.delete_button);
deleteButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int position = getAdapterPosition();
mDataList.remove(position);
notifyItemRemoved(position);
}
});
}
}
}
}
```
这个实现中,我们使用了 RecyclerView 和 ItemTouchHelper 来实现左滑删除效果。具体来说,我们在 RecyclerView 的 Adapter 中,将每个条目的布局设置为一个相对布局,其中包含一个 TextView 和一个 Button。然后,我们使用 ItemTouchHelper.Callback 来监听左滑事件,当用户滑动某个条目时,我们将该条目从数据源中删除,并调用 Adapter 的 notifyItemRemoved 方法来通知 RecyclerView 刷新界面。此外,我们还在每个条目的 ViewHolder 中,监听了 Button 的点击事件,实现了类似于滑动删除的效果。
阅读全文