android - 如何使用 Recyclerview 中单击的适配器的位置获取数据?
问题描述
我需要专门获取我之前在 Recyclerview 中设置为 textview 的 Row Id 的数据。
在这里,我得到了我留下的适配器的位置。通过使用我想获取我之前设置的隐藏 ID 并删除 SQlite 中的数据。
RecyclerviewAdapter.java
public class RecyclerviewAdapter_list extends RecyclerView.Adapter<RecyclerviewAdapter_list.MyViewHolder> {
private Context mContext;
private List<myAlarms> myAlarmsdata;
Database_Helper database_helper;
public RecyclerviewAdapter_list(Context mContext, List<myAlarms>myAlarmsdata){
this.mContext = mContext;
this.myAlarmsdata =myAlarmsdata;
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view;
LayoutInflater inflater = LayoutInflater.from(parent.getContext());
view = inflater.inflate(R.layout.cardview_alarm, parent, false);
return new MyViewHolder(view);
}
@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
myAlarms myAlarms =myAlarmsdata.get(position);
String mTimeSplit = myAlarms.getALARM_TIME();
SpannableString mtime= new SpannableString(mTimeSplit);
mtime.setSpan(new RelativeSizeSpan(2f), 0,5, 0);
holder.mTime.setText(mtime);
holder.mTitle.setText(myAlarms.getALARM_TITLE());
holder.mTitle.setTag(myAlarms.getALARM_ID());
String mStatus = myAlarms.getALARM_STATUS();
if(mStatus.equals("Active") && !holder.mbtn.isChecked()){
holder.mbtn.setChecked(true);
}else{
holder.mbtn.setChecked(false);
}
}
@Override
public int getItemCount() {
return myAlarmsdata.size();
}
public class MyViewHolder extends RecyclerView.ViewHolder {
TextView mTime,mTitle;
com.suke.widget.SwitchButton mbtn;
public RelativeLayout viewBackground;
public RelativeLayout viewForeground;
public MyViewHolder(View itemView) {
super(itemView);
mTime = (TextView) itemView.findViewById(R.id.mTime);
mTitle = (TextView) itemView.findViewById(R.id.mTitle);
mbtn = (com.suke.widget.SwitchButton)itemView.findViewById(R.id.mbtn);
viewBackground = itemView.findViewById(R.id.view_background);
viewForeground = itemView.findViewById(R.id.view_foreground);
database_helper = new Database_Helper(mContext);
mbtn.setOnCheckedChangeListener(new SwitchButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(SwitchButton view, boolean isChecked) {
if(isChecked == false) {
String mStatus = "InActive";
Integer mRowId = (Integer) mTitle.getTag();
database_helper.updateStatus(mRowId,mStatus);
}else{
if(isChecked == true){
String mStatus = "Active";
Integer mRowId = (Integer) mTitle.getTag();
database_helper.updateStatus(mRowId,mStatus);
}
}
}
});
}
}
public void removeItem(int position) {
myAlarmsdata.remove(position);
notifyItemRemoved(position);
//need to get the data by using the adapter position
}
}
谁能帮助我通过使用适配器位置来获取数据...
解决方案
你有它在myAlarmsdata
。
public void removeItem(int position) {
myAlarms myAlarms = myAlarmsdata.get(position);
int id = myAlarms.getALARM_ID();
myAlarmsdata.remove(position);
notifyItemRemoved(position);
// use id to get the data by using the adapter position
}
我没有正确理解你吗?
推荐阅读
- java - 无法在 Eclipse IDE 中下载 CrudRepository 源 - 找不到源
- python - 如何从 Windows Shell 启动 python 脚本?
- ruby-on-rails - 在字符串插值中格式化变量
- html - 无法解决 angular4 和 html 中的文本溢出问题
- reactjs - 如何在没有突变的情况下重新获取查询
- node.js - 我应该为每个游戏房间生成一个新的节点进程吗?
- reactjs - React Redux - 符合某些条件的项目列表
- reactjs - 如何为 React 项目添加样式
- c# - 欧盟通用数据保护条例 (GDPR) 的 Cookie 建议(想法)
- forms - 如何处理登录表单中的 Servlet?