游标如何知道列表视图中单击了哪个项目?

时间:2012-02-02 10:11:28

标签: android listview cursor

我有一个活动在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是一个结果集。光标如何知道点击了哪个项目?游标隐式调用的方法是什么,它给它点击项目的位置?

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

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

4 个答案:

答案 0 :(得分:2)

试试这个:

    @Override
   public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
//move cursor to clicked row
     cursor.moveToPosition(position);
}

答案 1 :(得分:1)

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

任何形式的列表,总是有一个适配器,这正是适配器工作得很好的原因。如果您使用自定义适配器查看自定义列表视图,您将确切了解如何完成此操作。

示例:

http://android.vexedlogic.com/2011/04/02/android-lists-listactivity-and-listview-ii-%E2%80%93-custom-adapter-and-list-item-view/

答案 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

的此链接

它可能对你有所帮助..