从SQLite检索数据到可扩展列表视图?

时间:2012-03-19 11:21:50

标签: android sqlite expandablelistview

嗨我有一个表“TABLE_OBJECTIVE”有1个问题和4个选项,我接受来自 EditText上。我的问题是如何将此问题显示为父级,将4个选项显示为子级 在可扩展列表视图中。我使用一些代码,但它不显示问题,只显示左 4中的一个选项。
这是我的示例代码。

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;
}

我真的不明白我的代码中的问题。
请给我一些提示或参考 这是模拟器的图像,只显示一个项目 我有4个选项(谷歌,三星,诺基亚,Onida) 在此先感谢。
enter image description here

1 个答案:

答案 0 :(得分:2)

嗨,请尝试使用此代码,它可以解决一个问题,但是因为我使用数组列表和散列映射,您可以使用长度和大小函数来解决多个问题

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);
        }
    }
}