【问题标题】:How to add item on second spinner on the based of first spinner?如何在第一个微调器的基础上在第二个微调器上添加项目?
【发布时间】:2012-03-26 08:12:20
【问题描述】:

我有两个微调器(主题和章节),我创建了两个表(章节,主题)。
我在主题微调器中添加所有主题名称,我需要在
上添加所有章节名称 主题微调器中项目选择的基础。我的问题是怎么做,因为我的
代码无法做到这一点。请提供一些提示或参考。
这是我的示例代码。

在 onCreate() 中

    addItemsOnSpinner1();
    addListenerOnSpinnerItemSelection();
    addItemsOnSpinner2();
    addListenerOnSpinner2ItemSelection();

使用上述调用函数我调用适当的方法。

private void addItemsOnSpinner1() {
    try
    {
        final MySQLiteHelper m=new MySQLiteHelper(getBaseContext());
        final List<ObjectiveWiseQuestion> LocWiseProfile= m.getAllSubject();

        for (final ObjectiveWiseQuestion cn : LocWiseProfile)
        {
            list.add(cn.getSubjectName());

        }
    }
    catch(Exception e)
    {
        e.printStackTrace();
    }

        ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,list);
            dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
            subSpinner.setAdapter(dataAdapter);

}

 private void addListenerOnSpinnerItemSelection()
{
    subSpinner.setOnItemSelectedListener(new mySpinnerListener());

}


private void addItemsOnChapter() 
{
    try
    {

        db=new MySQLiteHelper(getBaseContext());
        db.getWritableDatabase();
        //String name=owq.getSubjectName();
        int id=db.getSubjectId(name);
        owq.setSubjectId(id);
        long subId=owq.getSubjectId();
        final MySQLiteHelper m=new MySQLiteHelper(getBaseContext());
         final List<ObjectiveWiseQuestion> LocWiseProfile= m.getAllChapter(subId);

        for (final ObjectiveWiseQuestion cn : LocWiseProfile)
        {

            list.add(cn.getChapterName());
        }


        ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,list);
            dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
            chapSpinner.setAdapter(dataAdapter);
    }
    catch(Exception e)
    {
        e.printStackTrace();
    }

}
    private void addListenerOnSpinner2ItemSelection() 
{
    try
    {
        chapSpinner.setOnItemSelectedListener(new mySpinnerListener2());
    }
    catch(Exception e)
    {
        e.printStackTrace();
    }

}

这是我的监听器类。

class mySpinnerListener2 implements Spinner.OnItemSelectedListener
{
    @Override
    public void onItemSelected(AdapterView parent, View v, int position,
            long id) 
    {
        Toast.makeText(parent.getContext(), "The chapter is  " +
                  parent.getItemAtPosition(position).toString(), Toast.LENGTH_LONG).show();
        owq.setChapterName(parent.getItemAtPosition(position).toString());

    }

    @Override
    public void onNothingSelected(AdapterView parent) 
    {
        // Do nothing.
    }

}
class mySpinnerListener implements Spinner.OnItemSelectedListener
{
    @Override
    public void onItemSelected(AdapterView parent, View v, int position,
            long id) 
    {
        Toast.makeText(parent.getContext(), "The subject is  " +
                  parent.getItemAtPosition(position).toString(), Toast.LENGTH_LONG).show();
        owq.setSubjectName(parent.getItemAtPosition(position).toString());
        name=parent.getItemAtPosition(position).toString();



    }

    @Override
    public void onNothingSelected(AdapterView parent) 
    {
        // Do nothing.
    }

}

当我试图编译它但它显示空值。提供一些帮助。
提前致谢....... 没有找到任何好的答案.....

MysqliteHelper.java

public List<ObjectiveWiseQuestion> getAllChapter(long subId)
    {
     List<ObjectiveWiseQuestion>LocwiseProfileList=new ArrayList<ObjectiveWiseQuestion>();
     String selectQuery=("select chapterName from chapter where s_id ='"+ subId +"'");
     SQLiteDatabase db = this.getWritableDatabase();
        Cursor cursor = db.rawQuery(selectQuery, null);

        // looping through all rows and adding to list
        if (cursor.moveToFirst())
        {
            do {
                ObjectiveWiseQuestion owq= new ObjectiveWiseQuestion();
                owq.setChapterName(cursor.getString(2));
                LocwiseProfileList.add(owq);
              }
            while(cursor.moveToNext());
            db.close();
        }

        return LocwiseProfileList;
    }

【问题讨论】:

标签: android android-spinner


【解决方案1】:

在您的 myspinnerlistener 类中进行以下更改。

   class mySpinnerListener implements Spinner.OnItemSelectedListener
    {
    Spinner chapSpinner;
        public mySpinnerListener(Spinner chapSpinner){
    this.chapSpinner = chapSpinner;
        }
        @Override
        public void onItemSelected(AdapterView parent, View v, int position,
                long id) 
        {
            Toast.makeText(parent.getContext(), "The subject is  " +
                      parent.getItemAtPosition(position).toString(), Toast.LENGTH_LONG).show();
            owq.setSubjectName(parent.getItemAtPosition(position).toString());
            name=parent.getItemAtPosition(position).toString();
            // fetch the chaper names and set them on spinner
    chapSpinner.setAdapter(Here pass your adapter);


        }

        @Override
        public void onNothingSelected(AdapterView parent) 
        {
            // Do nothing.
        }

    }

而且这个变化也

 private void addListenerOnSpinnerItemSelection()
{
    subSpinner.setOnItemSelectedListener(new mySpinnerListener(chapSpinner));

}

我想这会解决你的问题。

【讨论】:

  • 您能否发布您将数组适配器设置为 chapspinner 的代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-22
  • 1970-01-01
  • 1970-01-01
  • 2013-06-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多