无法从 ListAdapter 获取项目
Can't get items from ListAdapter
我从数据库读取数据:
private MyDatabase db;
private Cursor cities;
private ListAdapter cityListAdapter;
private ListView citiesListView;
db = new MyDatabase(getContext());
cities = db.getCities();
并为其设置适配器:
cityListAdapter = new SimpleCursorAdapter(getContext(),
android.R.layout.simple_list_item_1,
cities,
new String[] {"city"},
new int[] {android.R.id.text1},0);
citiesListView.setAdapter(cityListAdapter);
我可以看到正确填充了 ListView
。但是当我尝试获取项目的字符串时,我得到了一个奇怪的字符串:android.database.sqlite.SQLiteCursor@4251fac0
这是我的代码:
citiesListView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
String str = cityListAdapter.getItem(position).toString();
chosenCityTextView.setText(str);
}
});
为什么我没有得到出现在 ListView
中的字符串?
因为getItem 方法returns 一个游标,然后你必须使用getColumnIndex 和getString 来获取你想要的字段的有效值。另见 Return object from CursorAdapter.get()
代码示例:
Cursor cursor = (Cursor) cityListAdapter.getItem(position);
String city = cursor.getString(cursor.getColumnIndex("city"));
chosenCityTextView.setText(city);
您之前的做法是调用游标对象的 .toString() 方法,这就是为什么您得到了那个奇怪的字符串(这是 java 中对象的地址)。
我从数据库读取数据:
private MyDatabase db;
private Cursor cities;
private ListAdapter cityListAdapter;
private ListView citiesListView;
db = new MyDatabase(getContext());
cities = db.getCities();
并为其设置适配器:
cityListAdapter = new SimpleCursorAdapter(getContext(),
android.R.layout.simple_list_item_1,
cities,
new String[] {"city"},
new int[] {android.R.id.text1},0);
citiesListView.setAdapter(cityListAdapter);
我可以看到正确填充了 ListView
。但是当我尝试获取项目的字符串时,我得到了一个奇怪的字符串:android.database.sqlite.SQLiteCursor@4251fac0
这是我的代码:
citiesListView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
String str = cityListAdapter.getItem(position).toString();
chosenCityTextView.setText(str);
}
});
为什么我没有得到出现在 ListView
中的字符串?
因为getItem 方法returns 一个游标,然后你必须使用getColumnIndex 和getString 来获取你想要的字段的有效值。另见 Return object from CursorAdapter.get()
代码示例:
Cursor cursor = (Cursor) cityListAdapter.getItem(position);
String city = cursor.getString(cursor.getColumnIndex("city"));
chosenCityTextView.setText(city);
您之前的做法是调用游标对象的 .toString() 方法,这就是为什么您得到了那个奇怪的字符串(这是 java 中对象的地址)。