【问题标题】:listview Onitemclick listener in AndroidAndroid中的listview Onitemclick监听器
【发布时间】:2013-05-21 06:07:04
【问题描述】:

我在使用 Sqlite 的 android 中的 itemclick 侦听器上遇到问题,我从 sqlite 数据库获取数据,我需要使用 onitemclick 侦听器将相同的数组列表传递给下一个活动。,但它不起作用。

 contactList.clear();


          String query = "SELECT  * FROM MessageTable  WHERE userID = '" + userid +"'"; 

          System.out.println("queryinsert="+query);

          Cursor c1 = sqlHandler.selectQuery(query);
          if (c1 != null && c1.getCount() != 0) {
           if (c1.moveToFirst()) {
           do {
             ContactListItems contactListItems = new ContactListItems();

             contactListItems.setSlno(c1.getString(c1.getColumnIndex("ID")));
                         contactListItems.setmessage(c1.getString(c1.getColumnIndex("message")));

             contactList.add(contactListItems);

            } while (c1.moveToNext());
           }
          }
          c1.close();
         }

这是数组列表ArrayList<ContactListItems> contactList我存储sqlite数据的地方,我需要在每个项目点击时将数据传递给下一个,有人可以指导我吗。@谢谢

【问题讨论】:

  • 使用 bundle 共享值。
  • 但问题是我无法点击列表视图

标签: android sqlite onitemclicklistener


【解决方案1】:

尝试使用这个。您可以使用 Serializable 接口传递类的 ArrayList。检查下面的代码。

1) you have to implement Serializable interface in your ContactListItems class like 

public class ContactListItems implements Serializable {

}

2) Pass arraylist of ContactListItems via intent:

Intent intent = new Intent(YourCurrentActivity.this, DestinationActivity.class);
intent.putExtra("ContactListData", arrayListData); //  here arrayListData is the object of ArrayList<ContactListItems>
startActivity(intent);

3) get Intent of ArrayList containing ContactListItems class:

ArrayList<ContactListItems> contactListData;

Bundle extras = getIntent().getExtras();
   if (extras != null) {
    contactListData = (ArrayList<ContactListItems>) extras
                    .getSerializable("ContactListData");

   }

希望对你有所帮助。

【讨论】:

  • error!!05-21 16:39:52.335: E/AndroidRuntime(276): java.lang.RuntimeException: Parcel: 无法编组值 com.example.universal.ContactListItems@4a21a958跨度>
  • 让我搜索一下这个异常。尝试 Parcelable 接口而不是 Serializable 接口,并且在获得额外内容时改变意图,例如:contactListData = (ArrayList) extras.getParcelable("ContactListData");查看此链接了解更多信息:shri.blog.kraya.co.uk/2010/04/26/…
  • 这是针对可序列化对象错误的。它不能完全编组 ContactListItems,也许你没有正确实现它或者有一些无法编组的东西?检查你是否实现了“import java.io.Serializable;”正确包装...
  • 感谢您的帮助..我已经实现了一切我如何获得特定的列表详细信息
【解决方案2】:

覆盖 ListView http://www.mkyong.com/android/android-listview-example/ 的 onitem 点击监听器

您可以使用 bundle,也可以使用另一个具有 ArrayList contactList 变量的类,然后在列表视图中单击检索行的 id 并使用 bundle 传递该 id,然后就可以了

【讨论】:

    【解决方案3】:

    如果你想用你的光标填充你的实体类,你应该使用 for 语句,现在你只得到光标的第一行并重新实例化你的类

    for(c.moveToFirst(); !c.isAfterLast(); c.moveToNext()) 
    {
    }
    

    并为您的列表侦听器使用:

    YourList.setOnItemClickListener(new OnItemClickListener(){
    
        @Override
        public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                long arg3) {
        }});
    

    编辑:这是您如何将数组列表放入意图的代码

    intent.putStringArrayListExtra("Tets",YourArrayList);
    

    【讨论】:

    • 如果您在设置列表适配器后放置此侦听器,则应单击它,否则放置相关代码(列表视图布局或列表视图定义)也许有人可以提供帮助
    • 好的..现在它的工作但我怎么能将 ArrayList contactList 传递给下一个活动
    • 定义一个 Bundle 然后在你的监听器中填充你的 Bundle 并用你的 Intent 发送它
    • 我可以使用bundle传递类的Arraylist吗
    • @priya2134412 我想建议您至少为那些非常热情地尝试解决您的问题的答案投票。
    猜你喜欢
    • 2012-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-22
    • 2012-01-19
    相关资源
    最近更新 更多