を使用しSpinner
てデータを入力する要素を取得しました。また、のカスタム行レイアウトに使用しています。すべてが正常に機能し、データを取得し、アイテムはカスタムレイアウトを使用します。Cursor
SimpleCursorAdapter
setViewBinder
Spinner
Spinner
Spinner
Spinner
ただし、ドロップダウンビューからアイテムをクリックしても何も起こりません。選択したアイテムが選択済みとして設定されたり、ドロップダウンビューが閉じたりすることはありません。何をしなければならないのかわからないので、リストから選択したアイテムがSpinner
ロジックに渡され、正常に実行されます。私が使用しているレイアウトは次のとおりです。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/linearLayout1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:baselineAligned="false"
android:clickable="true"
android:orientation="horizontal">
<ImageView
android:id="@+id/icon"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:src="@drawable/ic_launcher" />
<TextView
android:id="@+id/text"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_margin="6dp"
android:layout_weight="1"
android:textColor="#424242"
android:gravity="center_vertical"
android:text="Textfield" />
</LinearLayout>
</LinearLayout>
そしてここにありますViewBinder
:
static final ViewBinder VIEW_BINDER = new ViewBinder(){
public boolean setViewValue(View view, Cursor cursor, int columnIndex){
if (view.getId() == R.id.text){
String local = view.getResources().getString(cursor.getInt(columnIndex));
((TextView) view).setText( local );
return true;
}
if (view.getId() == R.id.icon){
int icon = cursor.getInt(columnIndex);
((ImageView) view).setImageResource(icon);
return true;
}
return false;
}
};
これが私がデータを追加する方法ですSpinner
:
private Spinner spinner;
private DBHandler dbhandler;
private SimpleCursorAdapter adapter;
private final String[] from = new String[]{dbhandler.LIB_LOCAL, dbhandler.LIB_ICON};
private final int[] to = { R.id.text, R.id.icon };
@Override
protected void onResume(){
super.onResume();
Cursor cursor = dbhandler.getLibEntries();
adapter = new SimpleCursorAdapter(this, R.layout.spinner_row, cursor, from, to);
adapter.setViewBinder(VIEW_BINDER);
spinner.setAdapter(adapter);
}
この投稿で提案されたようなものを追加するOnItemSelectedListener
と、以下のように実装されましたが、問題は解決しません。また、setOnItemSelectedListener
後で必要なデータフィールドを取得するのにどのように役立つかわかりません。
spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) {
// TODO Auto-generated method stub
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
// TODO Auto-generated method stub
}
});