我有一个活动在ListView中显示通话记录。此处用于填充listview的适配器扩展了CursorAdapter。 Listview设置为onItemClickListener(..)。我的问题是每当点击一个项目时光标如何获取数据?光标如何知道点击了哪个位置并且只需要从点击位置获取数据?我提供了代码snippnet。
public class CallLog extends Activity
{
ListView mListView;
Cursor cursor;
//other variables
public void OnCreate()
{
setContentView(R.layout.calllog);
//SQLiteDatabaseInstance db
cursor = db.query(...parameters to get all call logs...);
mListView.setOnItemClickListener(this);
}
public void OnItemClick( // all arguments... )
{
//there is a column name 'NAME' in call log table in database
String name = cursor.getString(cursor.getColumnIndex(Database.NAME))
//here name is obtained of the clicked item.
}
Cursor是一个结果集。光标如何知道点击了哪个项目?游标隐式调用的方法是什么,它给它点击项目的位置?
如果有类似问题的链接,请提供。
我希望我能让你理解这个问题。谢谢
答案 0 :(得分:2)
试试这个:
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
//move cursor to clicked row
cursor.moveToPosition(position);
}
答案 1 :(得分:1)
具体来说,不光标知道谁点击了什么。这实际上是由适配器处理的。适配器用于将元素组合在一起,并允许抽象,以便可以统一的方式处理它们。
任何形式的列表,总是有一个适配器,这正是适配器工作得很好的原因。如果您使用自定义适配器查看自定义列表视图,您将确切了解如何完成此操作。
示例:
答案 2 :(得分:1)
你应该在函数内部使用cursor.moveToposition(position)来到达被点击项目的位置。之后,您应用此项,当您点击任何项目时,光标将设置在该项目上,然后您可以使用该特定项目进行操作。
答案 3 :(得分:0)
mListView..setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0,
View view, int position, long id) {
// here position gives the which item is clicked..
}
});
另外,请查看ListView ListView and ListActivity
的此链接它可能对你有所帮助..