· 9 years ago · Oct 22, 2016, 08:02 PM
1// Table Columns names
2private static final String KEY_ID = "id";
3private static final String KEY_QUESTION = "question";
4private static final String KEY_ANSWER = "answer"; //correct option
5private static final String KEY_OPTA = "opta"; //option a
6private static final String KEY_OPTB = "optb"; //option b
7private static final String KEY_OPTC = "optc"; //option c
8private static final String KEY_OPTD = "optd"; //option d
9
10private SQLiteDatabase myDatabase;
11
12public SQLDatabaseT1(Context context) {
13 super(context, DATABASE_NAME, null, DATABASE_VERSION);
14}
15
16@Override
17public void onCreate(SQLiteDatabase db1) {
18
19 myDatabase=db1;
20
21 // A new table is created if there is none
22 String sql = "CREATE TABLE IF NOT EXISTS " + TABLE_QUESTION + " ( "
23 + KEY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + KEY_QUESTION
24 + " TEXT, " + KEY_ANSWER + " TEXT, "+ KEY_OPTA +" TEXT, "
25 + KEY_OPTB +" TEXT, "+ KEY_OPTC +" TEXT, " + KEY_OPTD + " TEXT)";
26
27 db1.execSQL(sql);
28
29 // Adds questions from this method below
30 addQuestions1();
31}
32
33@Override
34public void onUpgrade(SQLiteDatabase db1, int oldV, int newV) {
35
36 // Drop older table if existed
37 db1.execSQL("DROP TABLE IF EXISTS " + TABLE_QUESTION);
38
39 // Creates tables again
40 onCreate(db1);
41}
42
43// Takes 7 random rows from the table and puts into the topic quiz
44public Cursor getRandomDataItemFromDb(String TABLE_QUESTION, String limit) {
45 SQLiteDatabase db1 = this.getWritableDatabase();
46 Cursor cursor = db1.rawQuery("SELECT * FROM " + TABLE_QUESTION + " ORDER BY RANDOM() LIMIT 7", null);
47 if (cursor.moveToFirst()) {
48 return cursor;
49 }
50 return cursor;
51}
52
53// Sets the limit of how many questions will be in the quiz
54public int rowCount()
55{
56 int row=7; //There will be 7 questions in a quiz
57 return row;
58}
59
60public List<Question> getAllQuestions() {
61
62 List<Question> quesList = new ArrayList<Question>();
63
64 String selectQuery = "SELECT * FROM " + TABLE_QUESTION + " ORDER BY RANDOM() LIMIT 7";
65
66 myDatabase=this.getReadableDatabase();
67
68 Cursor cursor = myDatabase.rawQuery(selectQuery, null);
69
70 if (cursor.moveToFirst()) {
71 do {
72 Question quest = new Question();
73 quest.setId(cursor.getInt(0));
74 quest.setQUESTION(cursor.getString(1));
75 quest.setANSWER(cursor.getString(2));
76 quest.setOptionA(cursor.getString(3));
77 quest.setOptionB(cursor.getString(4));
78 quest.setOptionC(cursor.getString(5));
79 quest.setOptionD(cursor.getString(6));
80
81 quesList.add(quest);
82
83 } while (cursor.moveToNext());
84 }
85 // returns question list
86 return quesList;
87}
88
89public class QuizViewAnswers1 extends AppCompatActivity {
90
91private ListView listofAnswers;
92
93private List<Question> questionsList;
94private Question currentQuestion;
95
96ArrayList<HashMap<String, Object>> originalValues = new ArrayList<HashMap<String, Object>>();
97
98HashMap<String, Object> temp = new HashMap<String, Object>();
99
100public static String KEY_QUESTION = "questions";
101public static String KEY_CANS = "canswer";
102public static String KEY_YANS = "yanswer";
103
104private CustomAdapter adapter;
105
106ArrayList<String> myAnsList = new ArrayList<String>();
107
108Button homeQuiz;
109
110@Override
111protected void onCreate(Bundle savedInstanceState) {
112 super.onCreate(savedInstanceState);
113 setContentView(R.layout.quiz_show_ans);
114 String selectQuery;
115 Intent in = getIntent();
116 Bundle b = getIntent().getExtras();
117 myAnsList=in.getExtras().getStringArrayList("myAnsList");
118
119 listofAnswers=(ListView)findViewById(R.id.listofAnswers);
120
121 //Initialize the database
122 final SQLDatabaseT1 sqldb = new SQLDatabaseT1(this);
123 questionsList= sqldb.getAllQuestions();
124
125
126 for (int i = 0; i < 7; i++) {
127 currentQuestion = questionsList.get(i);
128 temp = new HashMap<String, Object>();
129 temp.put(KEY_QUESTION, currentQuestion.getQUESTION());
130 temp.put(KEY_CANS, currentQuestion.getANSWER());
131 temp.put(KEY_YANS, myAnsList.get(i));
132
133 // add the row to the ArrayList
134 originalValues.add(temp);
135
136 }
137
138 adapter = new CustomAdapter(QuizViewAnswers1.this, R.layout.ans_list, originalValues);
139 listofAnswers.setAdapter(adapter);
140
141 homeQuiz = (Button) findViewById(R.id.quizHome);
142 homeQuiz.setOnClickListener(new View.OnClickListener() {
143 @Override
144 public void onClick(View v) {
145 Intent intent = new Intent(QuizViewAnswers1.this, Quiz.class);
146 startActivity(intent);
147 finish();
148 }
149 });
150}
151
152// define your custom adapter
153private class CustomAdapter extends ArrayAdapter<HashMap<String, Object>> {
154 LayoutInflater inflater;
155
156 public CustomAdapter(Context context, int textViewResourceId, ArrayList<HashMap<String, Object>> Strings) {
157 super(context, textViewResourceId, Strings);
158 inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
159 }
160
161 // class for caching the views in a row
162 private class ViewHolder {
163
164 TextView viewQuestions, viewAnswers, yourAnswers;
165
166 }
167
168 ViewHolder viewHolder;
169
170 @Override
171 public View getView(int position, View convertView, ViewGroup parent) {
172
173 if (convertView == null) {
174
175 convertView = inflater.inflate(R.layout.ans_list, null);
176 viewHolder = new ViewHolder();
177
178 viewHolder.viewQuestions = (TextView) convertView.findViewById(R.id.question);
179
180 viewHolder.viewAnswers = (TextView) convertView
181 .findViewById(R.id.correctanswer);
182 viewHolder.yourAnswers = (TextView) convertView
183 .findViewById(R.id.useranswer);
184
185 // link the cached views to the convertview
186 convertView.setTag(viewHolder);
187
188 } else
189 viewHolder = (ViewHolder) convertView.getTag();
190
191 viewHolder.viewQuestions.setText(originalValues.get(position).get(KEY_QUESTION)
192 .toString());
193
194 viewHolder.viewAnswers.setText("Correct Answer: " + originalValues.get(position).get(KEY_CANS)
195 .toString());
196 viewHolder.yourAnswers.setText("Your Answer: " + originalValues.get(position)
197 .get(KEY_YANS).toString());
198
199 // return the view to be displayed
200 return convertView;
201 }
202}
203
204@Override
205public boolean onOptionsItemSelected(MenuItem item) {
206 switch (item.getItemId()) {
207 // Respond to the action bar's Up/Home button
208 case android.R.id.home:
209 NavUtils.navigateUpFromSameTask(this);
210 return true;
211 }
212 return super.onOptionsItemSelected(item);
213}