質問のタイトルが不明確である場合は、最初に申し訳ありません。簡潔に表現する方法が思いつきませんでした。
個人の名前、生年月日、職種をデータベースに追加するための基本的なデータベース機能を備えたアプリがあります。ジョブの種類は、XML リソース ファイルの文字列配列から取り込まれたスピナーから選択されます。
<string-array name="job_type_array">
<item>Job 1</item>
<item>Job 2</item>
<item>Job 3</item>
...
</string-array>
データベースにはジョブ名は保存されず、文字列配列内の位置が保存されます (つまり、「ジョブ 1」は整数 0 として保存されます)。
次に、データベースの内容を listView に表示すると、その位置ではなく実際のジョブを表示したいのですが、これを行う方法がわかりません。
listView に使用しているコードは、Android Developers の例からのものです。
public class PersonList extends ListActivity {
private static final int ACTIVITY_CREATE=0;
private static final int ACTIVITY_EDIT=1;
private static final int INSERT_ID = Menu.FIRST;
private static final int DELETE_ID = Menu.FIRST + 1;
public String[] mTypeArray;
public List typeList;
private PersonDbAdapter mDbHelper;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.horses_list);
mDbHelper = new PersonDbAdapter(this);
mDbHelper.open();
mTypeArray = getResources().getStringArray(R.array.job_type_array);
typeList = Arrays.asList(mTypeArray);
fillData();
registerForContextMenu(getListView());
}
private void fillData() {
// Get all of the rows from the database and create the item list
Cursor personCursor = mDbHelper.fetchAllPeople();
startManagingCursor(personCursor);
// Create an array to specify the fields we want to display in the list (only Name and job)
String[] from = new String[]{PersonDbAdapter.KEY_NAME, PersonDbAdapter.KEY_TYPE};
// and an array of the fields we want to bind those fields to
int[] to = new int[]{R.id.rowPersonName, R.id.rowPersonJobType};
// Now create a simple cursor adapter and set it to display
SimpleCursorAdapter people =
new SimpleCursorAdapter(this, R.layout.people_row, peopleCursor, from, to);
setListAdapter(people);
}
カーソル fetchAllPeople は、データベース内のすべての人のすべてのデータを取得します。
私の質問は; データベースに保存されているポジションだけでなく、実際のジョブを表示するにはどうすればよいですか。どんな助けでも大歓迎です。
編集:コードをまとめた