putDate 메서드를 main으로 사용하여 dbManager 클래스에서 updateStudentDate라는 메서드를 사용하여 ID와 날짜를 가져옵니다. 저장 단추를 클릭하면 데이터베이스에서 가져온 ID와 현재 날짜가 updateStudentDate로 보내집니다. 하지만 오류가 발생합니다.ListView 및 사용자 지정 어댑터
이것은 주요 활동입니다.
public class StartAttendance extends AppCompatActivity implements View.OnClickListener{
private DBManager dbManager;
private List<UserModel> students;
private String studentSubjectId;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.start_attendance);
final Button save = (Button) findViewById(R.id.save);
final Button cancel = (Button) findViewById(R.id.cancel);
final ListView listOfTakeAtt = (ListView) findViewById(R.id.listOfTakingAttendance);
Intent intent = getIntent();
studentSubjectId = intent.getStringExtra("studentSubjectId");
dbManager = new DBManager(StartAttendance.this);
dbManager.open();
ArrayList arrayList2 = dbManager.getAllStudentsName(Integer.valueOf(studentSubjectId));//Get the names from database.
students = new ArrayList<>();
setData(arrayList2);
final CustomLayoutOfTakingAttendance adapter = new CustomLayoutOfTakingAttendance(this, students);
listOfTakeAtt.setAdapter(adapter);
listOfTakeAtt.setDividerHeight(17);
cancel.setOnClickListener(this);
save.setOnClickListener(this);
listOfTakeAtt.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
UserModel model = students.get(i);
int y=model.isSelected?1:0;
model.setSelected(true);
students.set(i, model);
if(y==1){
model.setSelected(false);
}
adapter.updateRecords(students);
}
});
}
public void setData(ArrayList arrayList2){
for(int i=0;i<arrayList2.size();i++){
students.add(new UserModel(false, (String) arrayList2.get(i)));
}
}
@Override
public void onClick(View v){
switch (v.getId()){
//When save button is clicked i want to see present radioButton is checked or not for each item.
//if checked save current date into database for this id.
case R.id.save:
putDate();
break;
case R.id.cancel:
Intent i=new Intent(StartAttendance.this,ContentOfEachSubject.class);
i.putExtra("studentSubjectId",studentSubjectId);
startActivity(i);
break;
}
}
public void putDate(){
SimpleDateFormat DateFormat=new SimpleDateFormat("dd-MM-yyyy", Locale.getDefault());
Date d=new Date();
String date=DateFormat.format(d);
boolean isUpdated=false;
UserModel model;
ArrayList arrayList1 = dbManager.getAllStudentsId(Integer.valueOf(studentSubjectId));//Get the ids from the database.
for(int i=0;i<students.size();i++)
{
model = students.get(i);
if(model.isSelected){
dbManager = new DBManager(StartAttendance.this);
dbManager.open();
isUpdated = dbManager.UpdateStudentDate((Integer) arrayList1.get(i), date);
}
}
if(isUpdated){Toast.makeText(StartAttendance.this,"You took attendance successfully..",Toast.LENGTH_SHORT);}
else {Toast.makeText(StartAttendance.this,"Fail while getting attendance!!",Toast.LENGTH_SHORT);}
}
}
UserModel 클래스
public class UserModel {
boolean isSelected;
String name;
public UserModel(boolean isSelected,String name) {
this.isSelected = isSelected;
this.name=name;
}
public boolean isSelected() {
return isSelected;
}
public void setSelected(boolean selected) {
isSelected = selected;
}
public String getStudentName() {
return name;
}
public void setStudentName(String name) {
this.name = name;
}
}
dbManager 클래스
public boolean UpdateStudentDate(int id,String date){
ContentValues cv=new ContentValues();
cv.put(DatabaseHelper.KEY_STUDENT_DATE,date);
long result=database.update(DatabaseHelper.STUDENT_TABLE,cv,DatabaseHelper.KEY_STUDENT_ID+" = "+id,null);
databaseHelper.close();
if(result==-1){return false;}
else return true;
}
오류가 설명 된 로그를 제공 할 수 있습니까? – jpact
Bro 버튼을 클릭하면 앱이 자동으로 중지되며 오류는 표시되지 않습니다. –
심지어 logcat이 비어 있습니까? (Android Montior 탭) – jpact