Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/186.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 游标如何知道在listview中单击了哪个项目?_Android_Listview_Cursor - Fatal编程技术网

Android 游标如何知道在listview中单击了哪个项目?

Android 游标如何知道在listview中单击了哪个项目?,android,listview,cursor,Android,Listview,Cursor,我有一个在列表视图中显示调用日志的活动。此处用于填充listview扩展游标适配器的适配器。Listview设置为MClickListener(..)。我的问题是,每当单击一个项目时,游标是如何获取数据的?游标如何知道单击了哪个位置,并且只需要从单击的位置获取数据?我提供了一个代码snippnet public class CallLog extends Activity { ListView mListView; Cursor cursor; //other variabl

我有一个在列表视图中显示调用日志的活动。此处用于填充listview扩展游标适配器的适配器。Listview设置为MClickListener(..)。我的问题是,每当单击一个项目时,游标是如何获取数据的?游标如何知道单击了哪个位置,并且只需要从单击的位置获取数据?我提供了一个代码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.
   }
游标是一个结果集。光标如何知道单击了哪个项目?游标可以隐式调用哪些方法来确定单击项的位置

如果有任何类似问题的链接,请提供

我希望我能让你理解这个问题。谢谢

试试这个:

    @Override
   public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
//move cursor to clicked row
     cursor.moveToPosition(position);
}
@覆盖
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
//将光标移动到单击的行
光标。移动位置(位置);
}

特别是不是知道谁点击了什么的光标。这实际上是由适配器处理的。适配器用于将元素分组在一起,并允许抽象,以便以统一的方式处理它们

任何形式的列表,总是有一个适配器,这正是适配器工作得如此好的原因。如果您查看带有自定义适配器的自定义Listview,您将确切地看到这是如何完成的

例如:

mListView..setOnItemClickListener(新的OnItemClickListener(){
@凌驾
公共链接(AdapterView arg0,
视图、整型位置、长id){
//此处位置显示单击的项目。。
}
});
另外,请检查ListView的此链接


它可能会帮助您..

您应该在函数中使用cursor.moveToposition(位置)来到达单击项目的位置。然后应用此选项,然后单击任何项目,光标将设置在该项目上,然后您可以使用该特定项目进行操作。

实际上,无需将光标移动到单击的位置,我就可以从光标获取正确的数据。单击到第一个位置时,我仅从位置1获取名称。其他位置也一样。仍然感谢您的回复。没有问题。我只是想知道游标是如何从列表项中获取数据的,甚至不知道位置。但现在我得到了答案。请参阅JoxTraex的评论。不使用“位置”,我只需单击即可获得正确的数据。谢谢你的回复。
     mListView..setOnItemClickListener(new OnItemClickListener() {

    @Override
    public void onItemClick(AdapterView<?> arg0,
        View view, int position, long id) {
        // here position gives the which item is clicked..

        }
    });