私は2つのスピナー(件名と章)、2つのテーブル(章、件名)を作成しています。
件名スピナーにすべての件名を追加します。件名スピナーの項目選択の
基準にすべての章名を追加する必要があります。私の質問は、私の
コードがこれを行うことができないので、その方法です。ヒントや参考にしてください。
ここに私のサンプルコードです。私は適切なメソッドを呼び出す関数を呼び出す上に使用のonCreateで最初のスピナーに基づいて2番目のスピナーにアイテムを追加するにはどうすればよいですか?
()
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.
}
}
コンパイルしようとしていますが、null値が表示されます。助けてください。何か良い答えを見つけることが 事前に
おかげで....... .....
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;
}
あなたのコードでは、owqとは何ですか? – user936414
これはあなたを助けることができます:http://stackoverflow.com/questions/9465167/populating-a-spinner-from-another-spinner-depending-on-condition/9465340#9465340 – Hiral
owqは私のgetter-setterクラスのオブジェクトです –