嘿伙计这是我的代码:
private void populateListView() {
Cursor cursor = mydb.getAllEvents();
String[] fromFieldNames = new String[]
{DBHelper.EVENTS_COLUMN_NAME,DBHelper.EVENTS_COLUMN_CATEGORY};
int[] toViewIDs = new int[]
{R.id.event_name, R.id.cat_name};
SimpleCursorAdapter myCursorAdapter;
myCursorAdapter = new SimpleCursorAdapter(this,R.layout.item_layout,cursor,fromFieldNames,toViewIDs,0);
final ListView myList = (ListView) findViewById(R.id.listView1);
myList.setAdapter(myCursorAdapter);
myList.setOnClickListener(new AdapterView.OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
String selected = myList.getItemAtPosition(position);
}
});`
正如您所看到的那样,该位置有多个项目,那么我如何单独引用每个项目?例如,我只想引用事件的名称。
答案 0 :(得分:0)
myList.getItemAtPosition(position)为您提供表示该位置的行的“Object”。简单地说,这是由您的CursorAdapter定义的。这实际上是一个Cursor对象,应按如下方式进行转换:
Cursor myCursor = (Cursor) myList.getItemAtPosition(position);
然后你必须从Cursor中的正确位置获取String(应该按照你把它放入适配器的顺序):
String myDesiredString = myCursor.getString(cursorPos);
其中cursorPos是一个整数,表示您希望获得的位置。
有关更多信息,这是一个非常类似的问题: getItemAtPosition() How to get readable data....
作为旁注,我个人更喜欢使用我自己的扩展BaseAdapter的适配器,这样我就可以更好地控制数据,甚至可以让适配器返回数据[比如定义像public String getEventName(int position)
这样的方法] 。但是,这个上下文的最简单的解决方案就是我上面所描述的。
答案 1 :(得分:0)
拥有cursor
对象可让您使用position
和moveToPosition()
试试这个:
cursor.moveToPosition(position);
cursor.getString(1); // OR
cursor.getInt(1);// OR whatever you need.
更多信息here