I am new developer, i am making quiz app, there are categories, and each category has number of questions. I use Gridview. Categories are opening with image on MainActivity without problem. I used Adapters and Loaders. For example If I press FirstCategory the 1 question under it opening. There is TextViewQuestion and 4 RadioButtons with 4 answers and a Button to go to next question. RadioButtons are clickable. I can't write right code to go to next question by adapter. Here is my code: public class Questions {
private int id;
private Category cat_id;
private String category_id;
private String question;
private String ans_1;
private String ans_2;
private String ans_3;
private String ans_4;
private String ans_r;
private int status;
private int user_ans;
public Questions() {
}
public Questions(int id, String category_id, String question, String ans_1, String ans_2, String ans_3, String ans_4, String ans_r, int status, int user_ans) {
this.id = id;
this.category_id=category_id;
this.question = question;
this.ans_1 = ans_1;
this.ans_2 = ans_2;
this.ans_3 = ans_3;
this.ans_4 = ans_4;
this.ans_r = ans_r;
this.status = status;
this.user_ans = user_ans;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public Category getCat_id() {
return cat_id;
}
public void setCat_id(Category cat_id) {
this.cat_id = cat_id;
}
public String getCategory_id() {
return category_id;
}
public void setCategory_id(String category_id) {
this.category_id = category_id;
}
public String getQuestion() {
return question;
}
public void setQuestion(String question) {
this.question = question;
}
public String getAns_1() {
return ans_1;
}
public void setAns_1(String ans_1) {
this.ans_1 = ans_1;
}
public String getAns_2() {
return ans_2;
}
public void setAns_2(String ans_2) {
this.ans_2 = ans_2;
}
public String getAns_3() {
return ans_3;
}
public void setAns_3(String ans_3) {
this.ans_3 = ans_3;
}
public String getAns_4() {
return ans_4;
}
public void setAns_4(String ans_4) {
this.ans_4 = ans_4;
}
public String getAns_r() {
return ans_r;
}
public void setAns_r(String ans_r) {
this.ans_r = ans_r;
}
public int getStatus() {
return status;
}
public void setStatus(int status) {
this.status = status;
}
public int getUser_ans() {
return user_ans;
}
public void setUser_ans(int user_ans) {
this.user_ans = user_ans;
}
}
public List<HashMap<String, Category>> allCat(Context context){
SQLiteDatabase db = this.getReadableDatabase();
List<HashMap<String, Category>> list = new ArrayList<HashMap<String, Category>>();
String s = "select * from category";
Cursor cursor = db.rawQuery(s, null);
int count = 0;
if (cursor.moveToFirst()){
do {
Resources resources = context.getResources();
HashMap<String, Category> hm = new HashMap<String, Category>();
hm.put("category", new Category(cursor.getInt(1), resources.getIdentifier(context.getPackageName() + ":drawable/" +
cursor.getString(cursor.getColumnIndex("image")), null, null), cursor.getString(2)));
list.add(hm);
count ++;
}
while (cursor.moveToNext());
}
db.close();
return list;
}
public List<Questions> allQuestions(int id){
SQLiteDatabase db = this.getReadableDatabase();
List<Questions> questionses = new ArrayList<Questions>();
String st = "select * from matem where _id=" + id;
Cursor cursor = db.rawQuery(st, null);
if (cursor.moveToFirst()){
do {
questions = new Questions(
cursor.getInt(0),
cursor.getString(1),
cursor.getString(2),
cursor.getString(3),
cursor.getString(4),
cursor.getString(5),
cursor.getString(6),
cursor.getString(7),
cursor.getInt(8),
cursor.getInt(9));
questionses.add(questions);
}while (cursor.moveToNext());
}
db.close();
return questionses;
}
public class QuestionsLoaders extends AsyncTaskLoader>{
public int id;
// public int page;
public QuestionsLoaders(Context context, int id) {
super(context);
this.id=id;
// this.page=page; }
@Override
public List<Questions> loadInBackground() {
return new DbHelper(getContext()).allQuestions(id);
}
}
public class QuestionsAdapter extends BaseAdapter implements View.OnClickListener, OnCheckedChangeListener {
Context context;
LayoutInflater inflater;
DbHelper dbHelper;
List<Questions> questionses;
public Questions questionsClass;
private Button btn_next;
private RadioGroup radioGroup;
private RadioButton rb;
public QuestionsAdapter() {
}
public QuestionsAdapter(Context context, List<Questions> questionsList) {
if (questionsList != null) {
this.questionses = questionsList;
this.context = context;
inflater = (LayoutInflater) this.context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
dbHelper = new DbHelper(this.context);
}
}
@Override
public int getCount() {
return questionses.size();
}
@Override
public Object getItem(int position) {
return questionses.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
final View view = inflater.inflate(R.layout.question_list, null);
final Questions questions = questionses.get(position);
final TextView question = (TextView) view.findViewById(R.id.textQuestion);
question.setText(questions.getQuestion());
final RadioButton radAns1 = (RadioButton) view.findViewById(R.id.radAns1);
radAns1.setText(questions.getAns_1());
final RadioButton radAns2 = (RadioButton) view.findViewById(R.id.radAns2);
radAns2.setText(questions.getAns_2());
final RadioButton radAns3 = (RadioButton) view.findViewById(R.id.radAns3);
radAns3.setText(questions.getAns_3());
final RadioButton radAns4 = (RadioButton) view.findViewById(R.id.radAns4);
radAns4.setText(questions.getAns_4());
final TextView textAns = (TextView) view.findViewById(R.id.textAns);
textAns.setText("Right answer:" + questions.getAns_r());
btn_next = (Button) view.findViewById(R.id.btn_next);
btn_next.setOnClickListener(this);
return view;
}
@Override
public void onClick(View view) {
if (view==btn_next){
RadioButton rb = (RadioButton) view.findViewById(radioGroup.getCheckedRadioButtonId());
}
}
@Override
public void onCheckedChanged(RadioGroup radioGroup, int i) {
switch (i) {
case R.id.radAns1:
break;
case R.id.radAns2:
break;
case R.id.radAns3:
break;
case R.id.radAns4:
break;
}
}
}
public class FirstCategory extends BaseActivity implements LoaderManager.LoaderCallbacks<List<Questions>>{
DbHelper dbHelper;
private ListView listView;
List<Questions> allQuestions = new ArrayList<Questions>();
int intent;
// private Button btn_next;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.first);
dbHelper = new DbHelper(this);
intent = getIntent().getExtras().getInt("listid");
listView = (ListView)findViewById(R.id.listView);
listView.setAdapter(new QuestionsAdapter(getApplicationContext(), allQuestions));
// btn_next = (Button)findViewById(R.id.btn_next);
getSupportLoaderManager().restartLoader(0, null, this).forceLoad();
}
@Override
public Loader<List<Questions>> onCreateLoader(int id, Bundle args) {
switch (id){
case 1:
return new QuestionsLoaders(this, intent);
}
return new QuestionsLoaders(this, intent);
}
@Override
public void onLoadFinished(Loader<List<Questions>> loader, List<Questions> data) {
List s = (List) data;
listView.setAdapter(new QuestionsAdapter(getApplicationContext(), s));
}
@Override
public void onLoaderReset(Loader<List<Questions>> loader) {
refreshDate();
}
private void refreshDate() {
getSupportLoaderManager().restartLoader(0, null, this).forceLoad();
}
}
And Android Studio isn't importing Button and RadioButton, when i try to import studio giving me AppCompatButton. I copy their imports from other project. import android.widget.RadioButton; import android.widget.Button; Is it an error or what is it? I try to write many codes but couldn't take a result, so i asking fron professionals, how can i call next question by clicking btn_next. Thanks.
Aucun commentaire:
Enregistrer un commentaire