android - setOnitemSelectedListener 未通过以编程方式创建的微调器 Android 触发

标签 android

我的需求是

  1. 在单击按钮时创建一个动态微调器
  2. 选择微调器值并将值设置到编辑文本字段中。

为此,我以编程方式创建了一个动态微调器。将该代码放入按钮点击监听器中。到这里为止一切正常。

但是动态微调器的 setOnitemSelectedListener 根本不工作..Logcat 中没有错误...请帮助我..

------------ 这些是onCreate里面的方法------------

Spinner spnOutHospitalList = new Spinner(Referance.this);

// list button on click event
btnList = (Button) findViewById(R.id.btn_list);
btnList.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
    // TODO Auto-generated method stub
    // function to create spinner dynamically
    createDynamicSpinner();
    }
});

// Out Hospital List Spinner on item click listener
spnOutHospitalList.setOnItemSelectedListener(new OnItemSelectedListener() {
    @Override
    public void onItemSelected(AdapterView<?> arg0, View arg1,int position, long arg3) {
    // TODO Auto-generated method stub
    outHospitalName = hospitalNameListArray.get(position);
    outHospital.setText(outHospitalName);
    }
    @Override
    public void onNothingSelected(AdapterView<?> arg0) {
    // TODO Auto-generated method stub
    }
});



------------ These are the functions outside onCreate but inside the Activity------------


// to create spinner dynamically
private void createDynamicSpinner() {
    // TODO Auto-generated method stub
    spnOutHospitalList.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
    loadOutHospitalListSpinner();
    spnOutHospitalList.performClick();
}

// to load out hospital/ clinic data into spinner
private void loadOutHospitalListSpinner() {
    // TODO Auto-generated method stub
    try {
        if (getFirstRun()) {
        sampleDB = dbAdapter.getDatabase();
        setRunned();
        } 
        else {
        sampleDB = dbAdapter.getWritableDatabase();
        }
        Cursor c1 = sampleDB.rawQuery("select DISTINCT EPR_OUT_HOSPITAL from EMR_PT_REFERNCE",null);
        System.out.println("count is " + c1.getCount());

        if (c1 != null && c1.getCount() != 0) {
            hospitalNameListArray.clear();
                if (c1.moveToFirst()) {
                    do {
                        hospitalNameListArray.add(c1.getString(c1.getColumnIndex("EPR_OUT_HOSPITAL")));
                    } while (c1.moveToNext());  
                }
            }
            c1.close();

            ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, hospitalNameListArray);

            // dropdownlist
            dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

            spnOutHospitalList.setAdapter(dataAdapter);

        } 
        catch (Exception e) {
            // TODO: handle exception
            System.out.println("CAT LIST ERROR IS: " + e.getMessage());
        }

    }

最佳答案

试试这个

createDynamicSpinner中写入setOnItemSelectedListener

private void createDynamicSpinner() {

//Remove this line from top in your code and add here
Spinner spnOutHospitalList = new Spinner(Referance.this);

    spnOutHospitalList.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));

    //Pass Spinner Object to this function to load data in it!
    loadOutHospitalListSpinner(spnOutHospitalList);
    spnOutHospitalList.performClick();

spnOutHospitalList.setOnItemSelectedListener(new OnItemSelectedListener() {
    @Override
    public void onItemSelected(AdapterView<?> arg0, View arg1,int position, long arg3) {
    // TODO Auto-generated method stub
    outHospitalName = hospitalNameListArray.get(position);
    outHospital.setText(outHospitalName);
    }
    @Override
    public void onNothingSelected(AdapterView<?> arg0) {
    // TODO Auto-generated method stub
    }
});
}

关于android - setOnitemSelectedListener 未通过以编程方式创建的微调器 Android 触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13621711/

相关文章:

java - 我如何知道 Soundpool 已准备好使用低于 2.2 的 SDK 目标?

android - 在新的 Navigation Drawer Activity 模板中使用 onNavigationItemSelected 在 Fragments 之间切换(Android Studio 1.4 及更高版本)

java - 访问其他应用内部数据

java - 单击时禁用按钮,然后重新启用它

android - Canvas.drawText() 不起作用

android - 如何在android中使用Volley执行文件上传?

android - 关闭一个 ViewController 并在 iOS 中启动另一个(不重复,其他答案不起作用)

java - Intellij 找不到类 'android.app.Notification$Builder'

java - 与通过 android studio 安装相比,作为 APK 安装时,Retrofit 的行为不同且无法解析

java - 实现基本 dao 时,我收到错误 Type of theparameter must be an annotated with @Entity or a collection/array of it