10-9
编辑功能
删除功能
查看详情页
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android=""xmlns:app=""android:id="@+id/linearLayout_item1"android:layout_width="match_parent"android:layout_height="80dp"android:background="@drawable/underline_list"android:orientation="horizontal"><ImageViewandroid:id="@+id/imageView_item1"android:layout_width="72dp"android:layout_height="53dp"android:layout_gravity="center"app:srcCompat="@drawable/ic___wx_this" /><TextViewandroid:id="@+id/textView_item1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_margin="5dp"android:text="编号"android:textSize="16dp" /><TextViewandroid:id="@+id/textView_item2"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_margin="5dp"android:text="内容"android:textSize="16dp" /></LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android=""xmlns:app=""xmlns:tools=""android:layout_width="match_parent"android:background="@color/hui"android:layout_height="match_parent"android:orientation="horizontal">&lerview.widget.RecyclerViewandroid:id="@+id/recyclerView1"android:layout_width="match_parent"android:layout_height="match_parent"android:overScrollMode="never"android:scrollbars="none"android:visibility="visible"/>&le.android.material.floatingactionbutton.FloatingActionButtonandroid:id="@+id/fab"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentEnd="true"android:layout_alignParentBottom="true"android:layout_gravity="end|bottom"android:layout_marginStart="16dp"android:layout_marginTop="16dp"android:layout_marginEnd="36dp"android:layout_marginBottom="41dp"android:contentDescription="add"android:src="@drawable/ic_action_name" />&straintlayout.widget.ConstraintLayoutandroid:id="@+id/constraintlayout_none"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_alignParentStart="true"android:layout_alignParentTop="true"android:layout_alignParentEnd="true"android:layout_alignParentBottom="true"android:layout_marginStart="2dp"android:layout_marginTop="48dp"android:layout_marginEnd="-2dp"android:layout_marginBottom="461dp"android:background="@color/hui"android:visibility="gone"><EditTextandroid:id="@+id/text_add"android:layout_width="294dp"android:layout_height="58dp"android:layout_marginTop="4dp"android:ems="10"android:hint="请输入..."android:imeOptions="actionNext"android:inputType="text"android:minHeight="48dp"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent" /><Buttonandroid:id="@+id/button_cl"android:layout_width="117dp"android:layout_height="wrap_content"android:layout_marginTop="36dp"android:text="取消"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintEnd_toStartOf="@+id/button_ok"app:layout_constraintHorizontal_bias="0.444"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toBottomOf="@+id/text_add"app:layout_constraintVertical_bias="0.0" /><Buttonandroid:id="@+id/button_ok"android:layout_width="137dp"android:layout_height="48dp"android:layout_marginTop="36dp"android:layout_marginEnd="32dp"android:text="确认"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintTop_toBottomOf="@+id/text_add"app:layout_constraintVertical_bias="0.0" /></straintlayout.widget.ConstraintLayout></RelativeLayout>
输入框开始是隐藏状态
onBindViewHolder中设置3个组件内容
View1.setText("" + position);//转字符串View2.(position));holder.imageView_item1.setImageResource(addimg(position));
onBindViewHolder中的监听
holder.linearLayout_item1.setOnTouchListener(new View.OnTouchListener() {private int X;private int lastX;private int Y;@SuppressLint("ResourceAsColor")@Overridepublic boolean onTouch(View view, MotionEvent event) {switch (Action() & MotionEvent.ACTION_MASK) {case MotionEvent.ACTION_DOWN://当屏幕检测到第一个触点按下之后就会触发到这个事件。lastX = (int) RawX();Y = (int) RawY();X = (int) RawX();break;case MotionEvent.ACTION_UP://当触点松开时被触发。if (Math.abs((int) RawX() - X)<2){//单击,点击坐标没发生变化Intent intent = new Intent(Context(), MainActivity2.class);intent.putExtra("msg","position:"+position+"n"(position));context.startActivity(intent);}if(Math.abs(((int) RawX() - X))<200){holder.linearLayout_item1.setLeft(0);}else{onSwiped(position);holder.linearLayout_item1.setLeft(0);}break;case MotionEvent.ACTION_MOVE:int dx = (int) RawX() - lastX;int left = Left() + dx;holder.linearLayout_item1.setLeft(left);lastX = (int) RawX();break;}return true;}});
MotionEvent的几种触发的事件,目前存在bug.竖直滚动与左右滑动的判断
拖动还是点击的判断:根据触摸与抬起的坐标差在一定范围
删除数据
// 删除数据@SuppressLint("NotifyDataSetChanged")public void onSwiped(int p) {ve(p);notifyItemRemoved(p);notifyDataSetChanged();}
Fragment.java中Viewinit()
函数
private void Viewinit() {context = Activity();//fullview=getView();myadapter = new Adapter(context);//设置LayoutManagerLinearLayoutManager linearLayoutManager = new LinearLayoutManager(context);linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);recyclerView.setLayoutManager(linearLayoutManager);recyclerView.setHasFixedSize(true);recyclerView.setAdapter(myadapter);myadapter.list(list);}
列表的添加
@SuppressLint("NotifyDataSetChanged")@Overridepublic void onStart() {Start();fab=getActivity().findViewById(R.id.fab);ConstraintLayout constraintlayout_none=getActivity().findViewById(straintlayout_none);EditText text_add=getActivity().findViewById(_add);Button button_cl=getActivity().findViewById(R.id.button_cl);Button button_ok=getActivity().findViewById(R.id.button_ok);InputMethodManager imm = (InputMethodManager) SystemService(Context.INPUT_METHOD_SERVICE); ;fab.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {constraintlayout_none.setVisibility(View.VISIBLE);recyclerView.setVisibility(View.INVISIBLE);imm.showSoftInput(text_add, 0);text_add.setText("");button_ok.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {String s=Text().toString();constraintlayout_none.setVisibility(View.GONE);list.add(s);Log.d("add","+1");imm.hideSoftInputFromWindow(WindowToken(), 0);ifyDataSetChanged();recyclerView.ItemCount() - 1);Toast.makeText(context, "添加成功", Toast.LENGTH_SHORT).show();recyclerView.setVisibility(View.VISIBLE);}});button_cl.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {constraintlayout_none.setVisibility(View.GONE);Toast.makeText(context, "取消添加", Toast.LENGTH_SHORT).show();recyclerView.setVisibility(View.VISIBLE);imm.hideSoftInputFromWindow(WindowToken(), 0);}});//list.add("111111");//Log.d("add",String());}});}
思路是点击添加按钮后显示输入的layout,隐藏Reclyview,打开键盘
如果点击确认
则获取输入的值添加到列表,刷新reclyview,隐藏输入layout,软键盘,显示Reclyview
如果点击取消
直接还原视图(即隐藏输入layout,显示Reclyview…)
Adapter.java
ample.applicationtest;import android.annotation.SuppressLint;
t.Context;
t.Intent;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import androidx.annotation.NonNull;
lerview.widget.RecyclerView;
import java.util.List;public class Adapter extends RecyclerView.Adapter<Adapter.Myholder> {private View itemview;private Context context;private List<String> list;public int addimg(int i) {if (i % 4 == 0) {return R.drawable.num_a;} else if (i % 4 - 1 == 0) {return R.drawable.num_b;} else if (i % 4 - 2 == 0) {return R.drawable.num_c;} else if (i % 4 - 3 == 0) {return R.drawable.num_d;} else {return R.drawable.ic___fx;}}public Adapter(Context context) {t = context;}public void list(List<String> list) {this.list = list;notifyDataSetChanged();}@NonNull@Overridepublic Myholder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {itemview = LayoutInflater.from(context).inflate(R.layout.item1, parent, false);Myholder holder;holder = new Myholder(itemview);return holder;}@SuppressLint({"SetTextI18n", "ClickableViewAccessibility"})@Overridepublic void onBindViewHolder(@NonNull Myholder holder, @SuppressLint("RecyclerView") int position) {View1.setText("" + position);//转字符串View2.(position));holder.imageView_item1.setImageResource(addimg(position));
// holder.linearLayout_item1.setOnClickListener(new View.OnClickListener() {
// @Override
// public void onClick(View view) {
// //Toast.Context(), position + "号:" + (position), Toast.LENGTH_SHORT).show();
// Intent intent = new Intent(Context(), MainActivity2.class);
// intent.putExtra("msg","position:"+position+"n"(position));
// context.startActivity(intent);
// //onSwiped(position);
// }
// });holder.linearLayout_item1.setOnTouchListener(new View.OnTouchListener() {private int X;private int lastX;private int Y;@SuppressLint("ResourceAsColor")@Overridepublic boolean onTouch(View view, MotionEvent event) {switch (Action() & MotionEvent.ACTION_MASK) {case MotionEvent.ACTION_DOWN://当屏幕检测到第一个触点按下之后就会触发到这个事件。lastX = (int) RawX();Y = (int) RawY();X = (int) RawX();break;case MotionEvent.ACTION_UP://当触点松开时被触发。if (Math.abs((int) RawX() - X)<2){//单击,点击坐标没发生变化Intent intent = new Intent(Context(), MainActivity2.class);intent.putExtra("msg","position:"+position+"n"(position));context.startActivity(intent);}if(Math.abs(((int) RawX() - X))<200){holder.linearLayout_item1.setLeft(0);}else{onSwiped(position);holder.linearLayout_item1.setLeft(0);}break;case MotionEvent.ACTION_MOVE:int dx = (int) RawX() - lastX;int left = Left() + dx;holder.linearLayout_item1.setLeft(left);lastX = (int) RawX();break;}return true;}});}// 删除数据@SuppressLint("NotifyDataSetChanged")public void onSwiped(int p) {ve(p);notifyItemRemoved(p);notifyDataSetChanged();}@Overridepublic int getItemCount() {return list.size();}public static class Myholder extends RecyclerView.ViewHolder {private TextView textView1, textView2;private ImageView imageView_item1;private LinearLayout linearLayout_item1;public Myholder(@NonNull View itemView) {super(itemView);textView1 = itemView.findViewById(View_item1);textView2 = itemView.findViewById(View_item2);imageView_item1 = itemView.findViewById(R.id.imageView_item1);linearLayout_item1 = itemView.findViewById(R.id.linearLayout_item1);}}}
Fragment2.java
ample.applicationtest;import android.annotation.SuppressLint;
import android.app.Activity;
t.Context;
t.Intent;
import android.os.Bundle;
InputType;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.inputmethod.InputMethodManager;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;straintlayout.widget.ConstraintLayout;
import androidx.fragment.app.Fragment;
lerview.widget.LinearLayoutManager;
lerview.widget.RecyclerView;le.android.material.floatingactionbutton.FloatingActionButton;import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;import javax.security.auth.PrivateCredentialPermission;public class Fragment2 extends Fragment {private RecyclerView recyclerView;private Context context;private FloatingActionButton fab;private Adapter myadapter;private List<String> list = new ArrayList<>();@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {// Inflate the layout for this fragmentView view;view = inflater.inflate(R.layout.tab02, container, false);recyclerView = view.findViewById(lerView1);listdata();Viewinit();return view;}@SuppressLint("NotifyDataSetChanged")@Overridepublic void onStart() {Start();fab=getActivity().findViewById(R.id.fab);ConstraintLayout constraintlayout_none=getActivity().findViewById(straintlayout_none);EditText text_add=getActivity().findViewById(_add);Button button_cl=getActivity().findViewById(R.id.button_cl);Button button_ok=getActivity().findViewById(R.id.button_ok);InputMethodManager imm = (InputMethodManager) SystemService(Context.INPUT_METHOD_SERVICE); ;fab.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {constraintlayout_none.setVisibility(View.VISIBLE);recyclerView.setVisibility(View.INVISIBLE);imm.showSoftInput(text_add, 0);text_add.setText("");button_ok.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {String s=Text().toString();constraintlayout_none.setVisibility(View.GONE);list.add(s);Log.d("add","+1");imm.hideSoftInputFromWindow(WindowToken(), 0);ifyDataSetChanged();recyclerView.ItemCount() - 1);Toast.makeText(context, "添加成功", Toast.LENGTH_SHORT).show();recyclerView.setVisibility(View.VISIBLE);}});button_cl.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {constraintlayout_none.setVisibility(View.GONE);Toast.makeText(context, "取消添加", Toast.LENGTH_SHORT).show();recyclerView.setVisibility(View.VISIBLE);imm.hideSoftInputFromWindow(WindowToken(), 0);}});//list.add("111111");//Log.d("add",String());}});}private void Viewinit() {context = Activity();//fullview=getView();myadapter = new Adapter(context);//设置LayoutManagerLinearLayoutManager linearLayoutManager = new LinearLayoutManager(context);linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);recyclerView.setLayoutManager(linearLayoutManager);recyclerView.setHasFixedSize(true);recyclerView.setAdapter(myadapter);myadapter.list(list);}private void listdata() {list.add("明媚的阳光和明媚的少女······是不是很相衬呢?");list.add("别动哦,借你的眼睛照照镜子。是不是觉得很怀念?");list.add("我的眼睛漂亮吗?这可不是美瞳哦,是美少女的魔法。");...}}
继承于RecyclerView.ViewHolder
,编写自己的ViewHolder
实现onCreateViewHolder(ViewGroup parent, int viewType)
当RecyclerView需要我们提供类型为viewType的新ViewHolder时,会回调这个方法。实例化出了Item
的根布局,并返回一个和它绑定的ViewHolder
。
实现onBindViewHolder(VH viewHolder, int position)
当RecyclerView需要展示对应position位置的数据时会回调这个方法。
通过viewHolder中持有的对应position上的View,更新视图。
实现getItemCount()
返回Item的总数。
本文发布于:2024-01-31 13:12:09,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170667792928771.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |