У меня проблема с сохранением и отображением изображения с использованием SQLite
, затем отображение данных с помощью RecyclerView
. Мое намерение состоит в том, чтобы получить информацию пользователя, в пределах его жанра через RadioButton
, чтобы наконец показать данные и изображение, различающее мужчину и женщину. Все было в порядке, пытаясь сделать это без изображения, только текст, но когда я добавил необходимое изображение, приложение не удалось.
Я указал "/ * ??HERE * /"
, где, я полагаю, есть проблема.
Я очень надеюсь, что вы мне поможете. Спасибо.
public class MainActivity extends AppCompatActivity {
EditText edtNames, edtLastNames, edtId;
Button btnRegister, btnShow;
RadioButton rdbtnMale, rdbtnFemale;
int imgStudent;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
edtNames= (EditText) findViewById(R.id.edtNames);
edtLastNames= (EditText) findViewById(R.id.edtLastNames);
//...etc, etc ->linkinkgs
final SQLiteDb sqLiteDb =new SQLiteDb(getApplicationContext());
// ??HERE
if(rdbtnMale.isChecked()){
imgStudent = R.drawable.boy;
}else if(rdbtnFemale.isChecked()){
imgStudent = R.drawable.girl;
}
btnRegister.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
sqLiteDb.AddStudents(edtNames.getText().toString(),
edtLastNames.getText().toString(), edtId.getText().toString(),imgStudent /* ??HERE*/);
Toast.makeText(getApplicationContext(),"Was added correctly",
Toast.LENGTH_SHORT).show();
}
});
btnShow.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent showStudents = new Intent(getApplicationContext(),StudentsActivity.class);
startActivity(showStudents);
}
});
}
}
Студенческий класс
public class Student {
private String Names, LastNames, Id;
private int Image;
public Student(String names, String lastnames, String id, int imageStudent) {
//...parameters
}
// + Getters and Setters
}
База данных Помощник класса
public class SQLiteDb extends SQLiteOpenHelper {
private static final String TABLE_STUDENTS = "CREATE TABLE STUDENTS(NAMES TEXT,
LASTNAMES TEXT,ID TEXT, IMAGEN INT)";
public SQLiteDb(Context context) {
super(context, "db_students", null, 1);
}
@Override
public void onCreate(SQLiteDatabase sqLiteDatabase) {
sqLiteDatabase.execSQL(TABLE_STUDENTS);
}
@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int oldVersion, int newVersion) {
sqLiteDatabase.execSQL("DROP TABLE IF EXISTS TABLE_STUDENTS");
onCreate(sqLiteDatabase);
}
public void AddStudents(String names, String lastnames, String id,/*??HERE*/ int img) {
SQLiteDatabase bd = getWritableDatabase();
if (bd != null) {
bd.execSQL("INSERT INTO STUDENTS VALUES('" + names + "','"
+ lastnames + "','" + id + "','" + img + "')");
bd.close();
}
}
public List<Student> ShowStudents() {
SQLiteDatabase bd = getReadableDatabase();
Cursor cursor = bd.rawQuery("SELECT * FROM STUDENTS", null);
List<Student> students = new ArrayList<>();
if (cursor.moveToFirst()) {
do {
students.add(new Student(cursor.getString(0), cursor.getString(1)
, cursor.getString(2),/*??HERE*/ cursor.getInt(3)));
} while (cursor.moveToNext());
}
return students;
}
}
и адаптер: -
public class AdapterStudentList extends RecyclerView.Adapter<AdapterStudentList.ViewHolder> {
public static class ViewHolder extends RecyclerView.ViewHolder{
private TextView CompleteName;
ImageView ImageStudent;
public ViewHolder(View itemView) {
super(itemView);
CompleteName =(TextView)itemView.findViewById(R.id.tvCompleteName);
ImageStudent = (ImageView)itemView.findViewById(R.id.imgStudent);
}
}
public List<Student> studentsList;
public AdapterStudentList(List<Student>studentsList){
this.studentsList = studentsList;
}
//@NonNull
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_student,parent,false);
ViewHolder viewHolder= new ViewHolder(view);
return viewHolder;
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
holder.CompleteName.setText(studentsList.get(position).getNames()+" "+ studentsList.get(position).getLastNames());
holder.ImageStudent.setImageResource(studentsList.get(position).getImagen());
}
@Override