Reputation: 5905
Hi i have one table "TABLE_OBJECTIVE" with 1 question and 4 option which i accept from
EditText. My question is that how to show this Question as parent and 4 option as child
in expandable list view. i use some code but it doesn't display question and display only
one option out of 4.
Here is my sample code.
public class ObjectiveExamActivity extends ExpandableListActivity {
@SuppressWarnings("unchecked")
public void onCreate(Bundle savedInstanceState) {
try{
super.onCreate(savedInstanceState);
setContentView(R.layout.displayobjectiveque);
Intent intent=getIntent();
setResult(RESULT_OK, intent);
SimpleExpandableListAdapter expListAdapter =
new SimpleExpandableListAdapter(
this,
createGroupList(),
R.layout.group_row,
new String[] { "Group Item" },
new int[] { R.id.row_name },
createChildList(),
R.layout.child_row,
new String[] {"Sub Item"},
new int[] { R.id.grp_child}
);
setListAdapter( expListAdapter );
}catch(Exception e){
System.out.println("Errrr +++ " + e.getMessage());
}
}
@SuppressWarnings("unchecked")
private List createGroupList() {
ArrayList result = new ArrayList();
final MySQLiteHelper m=new MySQLiteHelper(getBaseContext());
final ArrayList<ObjectiveWiseQuestion> LocWiseProfile= (ArrayList<ObjectiveWiseQuestion>) m.getAllObjectiveQuestion();
for (final ObjectiveWiseQuestion cn : LocWiseProfile)
{
HashMap m1=new HashMap();
m1.put("Question",cn.getQuestion());
result.add(m1);
}
return (List)result;
}
@SuppressWarnings("unchecked")
private List createChildList()
{
final MySQLiteHelper m=new MySQLiteHelper(getBaseContext());
final ArrayList<ObjectiveWiseQuestion> LocWiseProfile= (ArrayList<ObjectiveWiseQuestion>) m.getAllObjectiveQuestion();
ArrayList result = new ArrayList();
for (final ObjectiveWiseQuestion cn : LocWiseProfile)
{
/* each group need each HashMap-Here for each group we have 4 subgroups */
ArrayList secList = new ArrayList();
for(ObjectiveWiseQuestion cn1: LocWiseProfile)
{
HashMap child = new HashMap();
//child.putAll(cn.getOptionA(),cn.getOptionB(),cn.getOptionC());
child.put( "Sub Item", "Sub Item " + cn.getOptionA() );
child.put("", cn.getOptionB());
child.put("Option C", cn.getOptionC());
child.put("Option D", cn.getOptionD());
secList.add( child );
}
result.add( secList );
}
return result;
}
I really don't understand where the problem in my code.
Please give me some hint or reference.
Here is image of emulator which show only one item.
I have 4 option(Google,Samsung,Nokia,Onida).
Thanks in Advance.
Upvotes: 0
Views: 2134
Reputation: 742
Hi please try this code its working fine for me for one question but as i used array list and hashmap you can use length and size functions for multiple questions
public class ShowQuiz extends Activity {
/** Called when the activity is first created. */
ExpandableListView expandableListView;
HashMap<String, Options> hashMap;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Options options=new Options();
hashMap=new HashMap<String, Options>(1);
hashMap.put("Which is Domestic Animal?", options);
expandableListView=(ExpandableListView) findViewById(R.id.ev);
expandableListView.setAdapter(new QuizQuestionAdapter());
}
class QuizQuestionAdapter extends BaseExpandableListAdapter
{
@Override
public Object getChild(int groupPosition, int childPosition) {
// TODO Auto-generated method stub
return hashMap.get(0).fetchOptions().get(childPosition);
}
@Override
public long getChildId(int groupPosition, int childPosition) {
// TODO Auto-generated method stub
return 0;
}
@Override
public View getChildView(int groupPosition, int childPosition,
boolean isLastChild, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
TextView textView=new TextView(ShowQuiz.this);
textView.setText(hashMap.get("Which is Domestic Animal?").getQuestion(childPosition).toString());
return textView;
}
@Override
public int getChildrenCount(int groupPosition) {
// TODO Auto-generated method stub
return 4;
}
@Override
public Object getGroup(int groupPosition) {
// TODO Auto-generated method stub
return hashMap.get(0);
}
@Override
public int getGroupCount() {
// TODO Auto-generated method stub
return 1;
}
@Override
public long getGroupId(int groupPosition) {
// TODO Auto-generated method stub
return 0;
}
@Override
public View getGroupView(int groupPosition, boolean isExpanded,
View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
TextView textView=new TextView(ShowQuiz.this);
textView.setText("Which is Domestic Animal?");
return textView;
}
@Override
public boolean hasStableIds() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
// TODO Auto-generated method stub
return false;
}
}
class Options
{
ArrayList<String> optns;
Options()
{
optns=new ArrayList<String>(4);
optns.add("rat");
optns.add("cat");
optns.add("dog");
optns.add("tiger");
}
public ArrayList<String> fetchOptions()
{
return this.optns;
}
public String getQuestion(int position)
{
return optns.get(position);
}
}
}
Upvotes: 2