在尊重MVVM架构的前提下,在RecyclerView中提交一个项目内按钮的点击事件,可以按照以下步骤进行操作:
public interface OnItemClickListener {
void onItemClick(int position);
}
public class MyViewHolder extends RecyclerView.ViewHolder {
private Button button;
public MyViewHolder(View itemView, final OnItemClickListener listener) {
super(itemView);
button = itemView.findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (listener != null) {
int position = getAdapterPosition();
if (position != RecyclerView.NO_POSITION) {
listener.onItemClick(position);
}
}
}
});
}
}
public class MyAdapter extends RecyclerView.Adapter<MyViewHolder> {
private List<Item> itemList;
private OnItemClickListener listener;
public MyAdapter(List<Item> itemList, OnItemClickListener listener) {
this.itemList = itemList;
this.listener = listener;
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_layout, parent, false);
return new MyViewHolder(itemView, listener);
}
@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
Item item = itemList.get(position);
// 设置ViewHolder中的视图数据
}
@Override
public int getItemCount() {
return itemList.size();
}
}
public class MainActivity extends AppCompatActivity implements OnItemClickListener {
private RecyclerView recyclerView;
private MyAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
recyclerView = findViewById(R.id.recyclerView);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
List<Item> itemList = new ArrayList<>();
// 初始化itemList数据
adapter = new MyAdapter(itemList, this);
recyclerView.setAdapter(adapter);
}
@Override
public void onItemClick(int position) {
// 处理按钮点击事件
}
}
通过以上步骤,你可以在尊重MVVM架构的同时,在RecyclerView中提交一个项目内按钮上的点击事件。请注意,以上示例代码仅为演示MVVM架构下RecyclerView中按钮点击事件的处理方式,具体实现可能因项目需求和框架而有所不同。
前阵子在一个移动项目中,通过 的方式 绑定click 事件来提交一个表单,由于表单信息比较敏感,于是采用的post 同步提交的方式,原本到也没有什么。后来万恶的PM说 “你这个按钮呀,要固定在底部比较好” ,于是乎就通过 position:fixed 固定到底部了。那么,问题来了 , 在ios 下,虚拟键盘是浮在页面上层的,导致的结果是当键盘收起后,浮在最底部的按钮不在最底下,而跑到中间来了,(极端条件下还可能挡住输入框导致无法输入),并且随着屏幕的滚动而滚动,,(表现类似于absolute) ,,高大上的苹果也是真心坑了一回。
领取专属 10元无门槛券
手把手带您无忧上云