Java 如何设置卡视图的id?
我已经创建了时间表列表。我使用了卡片视图和回收器视图。现在我已经为card view设置了id,以便将其与数据库的记录链接起来 但该卡的Id设置不正确。如果我试图删除记录。有些人被删除了,有些人没有被删除 TableListAdapter:Java 如何设置卡视图的id?,java,android,android-recyclerview,android-cardview,Java,Android,Android Recyclerview,Android Cardview,我已经创建了时间表列表。我使用了卡片视图和回收器视图。现在我已经为card view设置了id,以便将其与数据库的记录链接起来 但该卡的Id设置不正确。如果我试图删除记录。有些人被删除了,有些人没有被删除 TableListAdapter: public class TableListAdapter extends RecyclerView.Adapter<TableListAdapter.TableViewHolder> { public static Time
public class TableListAdapter extends RecyclerView.Adapter<TableListAdapter.TableViewHolder> {
public static TimeTableHelper db;
public static TimeTableList timeTableList;
public static int cardId,id;
public static boolean editMode;
private List<TimeTable> tableList;
public TableListAdapter(List<TimeTable> tableList,TimeTableList timeTableList) {
this.tableList = tableList;
this.timeTableList = timeTableList;
}
private Context context;
public TableListAdapter(Context context) {
this.context = context;
}
@Override
public int getItemCount() {
return tableList.size();
}
@Override
public void onBindViewHolder(TableViewHolder contactViewHolder, int i) {
TimeTable ci = tableList.get(i);
contactViewHolder.tableTitle.setText(ci.getTitle());
contactViewHolder.color.setBackgroundColor(ci.getTableColor());
}
@Override
public TableViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
cardId++;
View itemView = LayoutInflater.
from(viewGroup.getContext()).
inflate(R.layout.table_card, viewGroup, false);
return new TableViewHolder(itemView);
}
public static class TableViewHolder extends RecyclerView.ViewHolder {
protected TextView tableTitle;
protected CardView cv;
protected SwitchCompat aSwitch;
protected Button color;
private int status =0;
public TableViewHolder(View v) {
super(v);
tableTitle = (TextView) v.findViewById(R.id.tableTitle);
cv = (CardView) v.findViewById(R.id.card_view);
aSwitch = (SwitchCompat) v.findViewById(R.id.switch2);
color = (Button) v.findViewById(R.id.selectColor);
db = new TimeTableHelper(timeTableList);
cv.setId(cardId);
Log.d("cardId", String.valueOf(cardId));
cv.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
// TODO Auto-generated method stub
final AlertDialog.Builder builder = new AlertDialog.Builder(timeTableList);
builder.setTitle("Delete entry")
.setMessage("Are you sure you want to Delete this Time Table?")
.setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
id = cv.getId();
TimeTable t = new TimeTable();
t = db.getTable(id);
db.deleteTable(t);
Intent i = new Intent(timeTableList,TimeTableList.class);
timeTableList.startActivity(i);
}
})
.setNegativeButton(android.R.string.no, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// do nothing
}
})
.setIcon(R.drawable.ic_warning_black_36dp)
.show();
return true;
}
});
cv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
id = cv.getId();
editMode = true;
Intent i = new Intent(timeTableList, NewTimeTable.class);
i.putExtra("editMode", editMode);
i.putExtra("tableId", id);
timeTableList.startActivity(i);
}
});
aSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
id = cv.getId();
if (isChecked) {
status = 1;
TimeTable t = new TimeTable();
t = db.getTable(id);
t.setStatus(status);
db.updateStatus(t);
Log.d("status", String.valueOf(status));
final List<TimeTable> events = db.getAllTables();
for (TimeTable cn : events) {
String log = "Id: " + cn.getId() + " ,Title: " + cn.getTitle() +
"Status: " + cn.getStatus() + ",color: " + cn.getTableColor();
Log.d("Data ", log);
}
} else {
status = 0;
TimeTable t = new TimeTable();
t = db.getTable(id);
t.setStatus(status);
db.updateStatus(t);
final List<TimeTable> events = db.getAllTables();
for (TimeTable cn : events) {
String log = "Id: " + cn.getId() + " ,Title: " + cn.getTitle() +
"Status: " + cn.getStatus() + ",color: " + cn.getTableColor();
Log.d("Data ", log);
}
Log.d("status", String.valueOf(status));
}
}
});
}
}
public void updateAdapaterList(List<TimeTable> newTimeTableList) {
//Replace the current list with new list
this.tableList = newTimeTableList;
//notify the adapter that the data set has changed
notifyDataSetChanged();
}
}
公共类TableListAdapter扩展了RecyclerView.Adapter{
公共静态TimeTableHelperDB;
公共静态时间表时间表;
公共静态int-cardd,id;
公共静态布尔编辑模式;
私人名单;
公用TableListAdapter(列表、时间表、时间表){
this.tableList=tableList;
this.timeTableList=timeTableList;
}
私人语境;
公共TableListAdapter(上下文){
this.context=上下文;
}
@凌驾
public int getItemCount(){
返回tableList.size();
}
@凌驾
BindViewHolder上的公共无效(TableViewHolder联系人ViewHolder,int i){
时间表ci=表格列表。获取(i);
contactViewHolder.tableTitle.setText(ci.getTitle());
contactViewHolder.color.setBackgroundColor(ci.getTableColor());
}
@凌驾
公用表ViewHolder onCreateViewHolder(视图组视图组,int i){
cardd++;
视图项视图=布局调整器。
来自(viewGroup.getContext())。
充气(R.layout.table_卡、视图组、假);
返回新的TableViewHolder(itemView);
}
公共静态类TableViewHolder扩展了RecyclerView.ViewHolder{
受保护的TextView表格标题;
受保护的CardView cv;
受保护的开关;
保护按钮颜色;
私有int状态=0;
公共桌面视图夹(视图v){
超级(五);
tableTitle=(TextView)v.findViewById(R.id.tableTitle);
cv=(CardView)v.findViewById(R.id.card\u视图);
aSwitch=(SwitchCompat)v.findViewById(R.id.switch2);
颜色=(按钮)v.findViewById(R.id.selectColor);
db=新的TimeTableHelper(timeTableList);
cv.setId(卡迪德);
Log.d(“cardd”,String.valueOf(cardd));
cv.setOnLongClickListener(新视图。OnLongClickListener(){
@凌驾
仅长按公共布尔值(视图v){
//TODO自动生成的方法存根
final AlertDialog.Builder=新建AlertDialog.Builder(时间表列表);
builder.setTitle(“删除条目”)
.setMessage(“确实要删除此时间表吗?”)
.setPositiveButton(android.R.string.yes,新的DialogInterface.OnClickListener(){
public void onClick(DialogInterface dialog,int which){
id=cv.getId();
时刻表t=新时刻表();
t=db.getTable(id);
db.deleteTable(t);
意向i=新意向(timeTableList,timeTableList.class);
时刻表列表。开始活动(i);
}
})
.setNegativeButton(android.R.string.no,新的DialogInterface.OnClickListener(){
public void onClick(DialogInterface dialog,int which){
//无所事事
}
})
.setIcon(右可拖动ic警告黑色36dp)
.show();
返回true;
}
});
cv.setOnClickListener(new View.OnClickListener(){
@凌驾
公共void onClick(视图v){
id=cv.getId();
editMode=true;
意图i=新意图(timeTableList,newDimetable.class);
i、 putExtra(“编辑模式”,编辑模式);
i、 putExtra(“表id”,id);
时刻表列表。开始活动(i);
}
});
setOnCheckedChangeListener(新建CompoundButton.OnCheckedChangeListener(){
@凌驾
检查更改后的公共无效(复合按钮视图,布尔值已检查){
id=cv.getId();
如果(已检查){
状态=1;
时刻表t=新时刻表();
t=db.getTable(id);
t、 设置状态(状态);
db.updateStatus(t);
Log.d(“状态”,String.valueOf(状态));
最终列表事件=db.getAllTables();
对于(时间表cn:事件){
字符串log=“Id:”+cn.getId()+”,标题:“+cn.getTitle()+
状态:“+cn.getStatus()+”,颜色:“+cn.getTableColor()”;
Log.d(“数据”,Log);
}
}否则{
状态=0;
时刻表t=新时刻表();
t=db.getTable(id);
t、 设置状态(状态);
db.updateStatus(t);
最终列表事件=db.getAllTables();
对于(时间表cn:事件){
字符串log=“Id:”+cn.getId()+”,标题:“+cn.getTitle()+
状态:“+cn.getStatus()+”,颜色:“+cn.getTableColor()”;
Log.d(“数据”,Log);
}
Log.d(“状态”,String.valueOf(状态));
}
}
});
}
}
public void updateadapterlist(列表newdimetablelist){
//用新列表替换当前列表
这
public class TableListAdapter extends RecyclerView.Adapter<TableListAdapter.TableViewHolder> {
public static TimeTableHelper db;
public static TimeTableList timeTableList;
public static int cardId,id;
public static boolean editMode;
private List<TimeTable> tableList;
public TableListAdapter(List<TimeTable> tableList,TimeTableList timeTableList) {
this.tableList = tableList;
this.timeTableList = timeTableList;
}
private Context context;
public TableListAdapter(Context context) {
this.context = context;
}
@Override
public int getItemCount() {
return tableList.size();
}
@Override
public void onBindViewHolder(TableViewHolder contactViewHolder, int i) {
contactViewHolder.cv.setTag(i);
TimeTable ci = tableList.get(i);
contactViewHolder.tableTitle.setText(ci.getTitle());
contactViewHolder.color.setBackgroundColor(ci.getTableColor());
}
@Override
public TableViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
cardId++;
View itemView = LayoutInflater.
from(viewGroup.getContext()).
inflate(R.layout.table_card, viewGroup, false);
return new TableViewHolder(itemView);
}
public static class TableViewHolder extends RecyclerView.ViewHolder {
protected TextView tableTitle;
protected CardView cv;
protected SwitchCompat aSwitch;
protected Button color;
private int status =0;
public TableViewHolder(View v) {
super(v);
tableTitle = (TextView) v.findViewById(R.id.tableTitle);
cv = (CardView) v.findViewById(R.id.card_view);
aSwitch = (SwitchCompat) v.findViewById(R.id.switch2);
color = (Button) v.findViewById(R.id.selectColor);
db = new TimeTableHelper(timeTableList);
cv.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
// TODO Auto-generated method stub
id = (int) v.getTag();
final AlertDialog.Builder builder = new AlertDialog.Builder(timeTableList);
builder.setTitle("Delete entry")
.setMessage("Are you sure you want to Delete this Time Table?")
.setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
TimeTable t = new TimeTable();
t = db.getTable(id);
db.deleteTable(t);
Intent i = new Intent(timeTableList,TimeTableList.class);
timeTableList.startActivity(i);
}
})
.setNegativeButton(android.R.string.no, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// do nothing
}
})
.setIcon(R.drawable.ic_warning_black_36dp)
.show();
return true;
}
});
cv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
id = (int) v.getTag();
editMode = true;
Intent i = new Intent(timeTableList, NewTimeTable.class);
i.putExtra("editMode", editMode);
i.putExtra("tableId", id);
timeTableList.startActivity(i);
}
});
//And your other stuff
public class TableListAdapter extends RecyclerView.Adapter<TableListAdapter.TableViewHolder> {
public static TimeTableHelper db;
public static TimeTableList timeTableList;
public static int cardId,id;
public static boolean editMode;
private List<TimeTable> tableList;
public TableListAdapter(List<TimeTable> tableList,TimeTableList timeTableList) {
this.tableList = tableList;
this.timeTableList = timeTableList;
}
private Context context;
public TableListAdapter(Context context) {
this.context = context;
}
@Override
public int getItemCount() {
return tableList.size();
}
@Override
public TableViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
cardId++;
View itemView = LayoutInflater.
from(viewGroup.getContext()).
inflate(R.layout.table_card, viewGroup, false);
return new TableViewHolder(itemView);
}
@Override
public void onBindViewHolder(TableViewHolder contactViewHolder, int i) {
TimeTable ci = tableList.get(i);
contactViewHolder.tableTitle.setText(ci.getTitle());
contactViewHolder.color.setBackgroundColor(ci.getTableColor());
contactViewHolder.view.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
// TODO Auto-generated method stub
final AlertDialog.Builder builder = new AlertDialog.Builder(timeTableList);
builder.setTitle("Delete entry")
.setMessage("Are you sure you want to Delete this Time Table?")
.setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
id = cv.getId();
TimeTable t = new TimeTable();
t = db.getTable(id);
db.deleteTable(t);
notifyDataSetChanged();
Intent i = new Intent(timeTableList,TimeTableList.class);
timeTableList.startActivity(i);
}
})
.setNegativeButton(android.R.string.no, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// do nothing
}
})
.setIcon(R.drawable.ic_warning_black_36dp)
.show();
return true;
}
});
contactViewHolder.view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
id = cv.getId();
editMode = true;
Intent i = new Intent(timeTableList, NewTimeTable.class);
i.putExtra("editMode", editMode);
i.putExtra("tableId", id);
timeTableList.startActivity(i);
}
});
contactViewHolder.aSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
id = cv.getId();
if (isChecked) {
status = 1;
TimeTable t = new TimeTable();
t = db.getTable(id);
t.setStatus(status);
db.updateStatus(t);
Log.d("status", String.valueOf(status));
final List<TimeTable> events = db.getAllTables();
for (TimeTable cn : events) {
String log = "Id: " + cn.getId() + " ,Title: " + cn.getTitle() +
"Status: " + cn.getStatus() + ",color: " + cn.getTableColor();
Log.d("Data ", log);
}
} else {
status = 0;
TimeTable t = new TimeTable();
t = db.getTable(id);
t.setStatus(status);
db.updateStatus(t);
final List<TimeTable> events = db.getAllTables();
for (TimeTable cn : events) {
String log = "Id: " + cn.getId() + " ,Title: " + cn.getTitle() +
"Status: " + cn.getStatus() + ",color: " + cn.getTableColor();
Log.d("Data ", log);
}
Log.d("status", String.valueOf(status));
}
}
});
contactViewHolder.view.
}
}
public static class TableViewHolder extends RecyclerView.ViewHolder {
protected TextView tableTitle;
protected CardView cv;
protected SwitchCompat aSwitch;
protected Button color;
private int status =0;
private View view;
public TableViewHolder(View v) {
super(v);
tableTitle = (TextView) v.findViewById(R.id.tableTitle);
cv = (CardView) v.findViewById(R.id.card_view);
aSwitch = (SwitchCompat) v.findViewById(R.id.switch2);
color = (Button) v.findViewById(R.id.selectColor);
view = v;
db = new TimeTableHelper(timeTableList);
cv.setId(cardId);
}
}