我正在寻找有关如何使微调器显示多个项目的帮助,但需要从SQLitedatabase获取数据。
我已经能够从数据库中获取数据并将其放入带有一个项目的微调器中。我这样做是通过将数据库中的一列拉到ArrayList中,然后将ArrayList添加到Array Adapter中,如下所示,这是我当前的代码:
spinner = (Spinner) view.findViewById(R.id.Spinner);
ArrayAdapter<String> catAdapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_spinner_item, ArrayListNames);
catAdapter.setDropDownViewResource(R.layout.spinner_item);
spinner.setAdapter(catAdapter);
但是,我需要微调器为每行显示两个项目。现在,我正在从数据库中拉出一个名为“名称”的列。我希望能够同时显示“年龄”列。
因此微调器将如下所示:
Item 1: John
33
Item 2: Dave
24
然后,用户可以从微调器中选择John或Dave。我只希望能够在每一行中显示多个信息。对我来说,问题是它从数据库进入ArrayList,然后进入微调器的适配器。
有谁知道我该如何增加年龄?
我真的很感谢您的帮助,谢谢!
编辑:我现在如何获取数据。
ArrayList<String> ArrayListNames = new ArrayList<String>();
Cursor c = db.rawQuery("SELECT * FROM table_one", null);
if (c.moveToFirst()) {
do {
ArrayListNames.add(c.getString(c.getColumnIndex("name")));
ArrayListNames.add(c.getString(c.getColumnIndex("age")));
}
while (c.moveToNext());
}
c.close();
我已经在聊天室中发布了代码和说明。以下代码已从android中的自定义微调器修改为供个人使用
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.TextView;
import java.util.ArrayList;
public class customSpinner extends Activity
{
ArrayList<String> name = new ArrayList<String>();
ArrayList<String> age = new ArrayList<String>();
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.customspinner);
for (int i =0 ;i<=2;i++){
name.add(""+i);
age.add(""+i);
}
Spinner mySpinner = (Spinner)findViewById(R.id.spinner);
mySpinner.setAdapter(new MyAdapter(this, R.layout.spinnerrow, name));
}
public class MyAdapter extends ArrayAdapter<String>
{
public MyAdapter(Context context, int textViewResourceId, ArrayList<String> objects)
{
super(context, textViewResourceId, objects);
}
@Override
public View getDropDownView(int position, View convertView,ViewGroup parent)
{
return getCustomView(position, convertView, parent);
}
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
return getCustomView(position, convertView, parent);
}
public View getCustomView(int position, View convertView, ViewGroup parent)
{
LayoutInflater inflater=getLayoutInflater();
View row=inflater.inflate(R.layout.spinnerrow, parent, false);
TextView label=(TextView)row.findViewById(R.id.company);
label.setText(name.get(position));
TextView sub=(TextView)row.findViewById(R.id.sub);
sub.setText(age.get(position));
return row;
}
}
}
除了使用for循环将项目添加到之外ArrayList
,您还可以通过database
使用cursors
或手动提供值来获取值。只需根据自己的需要进行修改。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句