Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android中带sqlite数据库的Spinner_Android_Sqlite - Fatal编程技术网

Android中带sqlite数据库的Spinner

Android中带sqlite数据库的Spinner,android,sqlite,Android,Sqlite,我有一个微调器、一个按钮和一个列表视图 我想从微调器中选择项目,单击按钮后,微调器和数据库内容的匹配必须显示在ListView中。数据库值为字符串数据类型 请任何人指导我如何操作?对于spinner,首先创建一个适配器,如: ArrayAdapter<CharSequence> adapter=ArrayAdapter.createFromResource(this, R.array.months, android.R.layout.simple_spinner_item); ada

我有一个微调器、一个按钮和一个列表视图

我想从微调器中选择项目,单击按钮后,微调器和数据库内容的匹配必须显示在ListView中。数据库值为字符串数据类型


请任何人指导我如何操作?

对于spinner,首先创建一个适配器,如:

ArrayAdapter<CharSequence> adapter=ArrayAdapter.createFromResource(this, R.array.months, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);

这将把ur数据库列值添加到微调器中

假设微调器中填充了字符串数组,则可以执行以下步骤:

i) 在
setOnItemSelectedListener
事件中,通过获取所选位置的位置

int pos=urspinner.getSelectedItemPosition()
并通过

 strsel=arrstr[pos]; 
ii)在按钮上单击listener use
strsel
,通过查询数据库填充listadapter

完成

例如:

     setContentView(R.layout.main);
        ListView lv=(ListView)findViewById(R.id.listview);
        Button b=(Button)findViewById(R.id.button);
        Spinner sp=(Spinner)findViewById(R.id.spinner);
        final ArrayList<String> options=new ArrayList<String>();

        Cursor cursor=dbHelper.getOptions();//method to get all options to be displayed in spinner,coming from your database

        if(cursor.getCount()>0)
        {
            cursor.moveToFirst();
            for(int i=0;i<cursor.getCount();i++)
            {
                 options.add(cursor.getString(cursor.getColumnIndex("field_name")));
                cursor.moveToNext();
            }
            ArrayAdapter<String> adapter = new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_spinner_item,options);
            sp.setAdapter(adapter);
        }

       b.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {

                  Cursor c=db_helper.getRelatedItems(spinner.getSelectedItem().toString()); //get related data from database according to the item selected in spinner
                  if(c.getCount()>0)
                  {         
                       CustomAdapter ca=new CustomAdapter(context,R.layout.listitem_layout,cursor,new String[]{"field 1","field 2"},new int[]{R.id.textview1,R.id.textview2});
                       //here you would have to pass your custom layout file containing textviews or other component to display your data using CustomAdapter.class which you had prepared 
                       listview.setAdapter(ca);
                       ca.notifyDataSetChanged();

                       listview.setOnItemClickListener(new OnItemClickListener() {    
                              @Override
                              public void onItemClick(AdapterView<?> arg0, View view,
                        int position, long id) {

                                //catch onClick on items of listview here
                              }
                       });
                 }  
           }
      });
setContentView(R.layout.main);
ListView lv=(ListView)findViewById(R.id.ListView);
按钮b=(按钮)findViewById(R.id.Button);
微调器sp=(微调器)findViewById(R.id.Spinner);
最终ArrayList选项=新建ArrayList();
Cursor Cursor=dbHelper.getOptions()//方法获取从数据库中显示在微调器中的所有选项
if(cursor.getCount()>0)
{
cursor.moveToFirst();
对于(int i=0;i0)
{         
CustomAdapter ca=new CustomAdapter(上下文,R.layout.listitem_布局,光标,新字符串[]{“字段1”,“字段2”},新int[]{R.id.textview1,R.id.textview2});
//在这里,您必须传递包含TextView或其他组件的自定义布局文件,以使用您准备的CustomAdapter.class显示数据
setAdapter(ca);
ca.notifyDataSetChanged();
setOnItemClickListener(新的OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView arg0,视图,
内部位置,长id){
//在此处单击listview中的项目
}
});
}  
}
});

user932478,如果您认为此答案对您有用,请单击此答案左侧的勾号,使其对所有用户可见,并提高您的答案接受率,以获得相关答案。。。
     setContentView(R.layout.main);
        ListView lv=(ListView)findViewById(R.id.listview);
        Button b=(Button)findViewById(R.id.button);
        Spinner sp=(Spinner)findViewById(R.id.spinner);
        final ArrayList<String> options=new ArrayList<String>();

        Cursor cursor=dbHelper.getOptions();//method to get all options to be displayed in spinner,coming from your database

        if(cursor.getCount()>0)
        {
            cursor.moveToFirst();
            for(int i=0;i<cursor.getCount();i++)
            {
                 options.add(cursor.getString(cursor.getColumnIndex("field_name")));
                cursor.moveToNext();
            }
            ArrayAdapter<String> adapter = new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_spinner_item,options);
            sp.setAdapter(adapter);
        }

       b.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {

                  Cursor c=db_helper.getRelatedItems(spinner.getSelectedItem().toString()); //get related data from database according to the item selected in spinner
                  if(c.getCount()>0)
                  {         
                       CustomAdapter ca=new CustomAdapter(context,R.layout.listitem_layout,cursor,new String[]{"field 1","field 2"},new int[]{R.id.textview1,R.id.textview2});
                       //here you would have to pass your custom layout file containing textviews or other component to display your data using CustomAdapter.class which you had prepared 
                       listview.setAdapter(ca);
                       ca.notifyDataSetChanged();

                       listview.setOnItemClickListener(new OnItemClickListener() {    
                              @Override
                              public void onItemClick(AdapterView<?> arg0, View view,
                        int position, long id) {

                                //catch onClick on items of listview here
                              }
                       });
                 }  
           }
      });