Java 如何设置卡视图的id?

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

我已经创建了时间表列表。我使用了卡片视图和回收器视图。现在我已经为card view设置了id,以便将其与数据库的记录链接起来

但该卡的Id设置不正确。如果我试图删除记录。有些人被删除了,有些人没有被删除

TableListAdapter:

    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);     



      }
  }