【问题标题】:Find out an item is clicked in listView in android在android的listView中找出一个项目被点击
【发布时间】:2014-08-18 19:32:10
【问题描述】:

我的自定义列表视图中有大约 150 个项目。我正在尝试实现以下内容:

list.setOnItemClickListener(new OnItemClickListener() {

1.我得到了项目的位置

2。从 ArrayList 中获取数据

3.将数据添加到数据库。

这部分工作正常。

但如果我想通过单击项目从数据库中删除特定项目,我无法实现这部分?

原因是因为我不确定该项目是否被点击?我遇到这个问题主要是当我想在 listView 中实现搜索并将所选项目添加到数据库并从数据库中删除所选项目时。

    // Click event for single list row
    list.setOnItemClickListener(new OnItemClickListener()
    {
        @Override
        public void onItemClick(AdapterView<?> parent, View view,
                int position, long id) 
        {

            if (notfromsearch == true)
            {
                String profile_ID = profileList.get(position).get(KEY_ID);
                String profile_DISPLAY_NAME = profileList.get(position).get(KEY_DISPLAY_NAME);
              //add to database now

            }
            elseif (notfromsearch == false)
            {
                String SearchResult_profile_ID = searchProfileResults.get(position).get(KEY_ID);
                String SearchRResult_profile_DISPLAY_NAME = searchProfileResults.get(position).get(KEY_DISPLAY_NAME);
                //add to database now
            }
        }
    }); 

但是如何实现从数据库中删除呢?我无法区分之前是否单击了该项目以从数据库中删除。

有人可以帮我解决这个问题吗?

谢谢!

【问题讨论】:

  • 您的 ArrayList 包含 StringsCustomObjects ??
  • Arraylist 包含 ArrayList> profileList;.

标签: android android-listview


【解决方案1】:

在您的列表视图中,使用

setOnItemClickListener

接下来你可以做你想做的事了。

【讨论】:

  • 我已经 setOnitemClick 如果我选择了该项目,一切正常,但如果我想从数据库中删除数据,我不确定如何取消选择该项目?
  • 你的问题不够清楚,先生,也许你需要看看这个问题stackoverflow.com/questions/18103721/…
  • 请再次阅读我的问题,先生,您会明白的。我有自定义列表视图中显示的项目列表。当我选择它时,我想将相应的数据添加到数据库中。 (这部分工作正常)但是如果我想取消选择项目(从数据库中删除数据)我如何在同一个 setOnItemclickListener 上实现这部分
【解决方案2】:

使用context menudatabase 中删除项目

long press 上显示delete/edit 选项并根据需要执行进一步操作。

查看here 获取上下文菜单示例

编辑

您也可以将button/image 放在listviewdelete 项中,然后在click 方法中实现您的delete 操作。

用于复选框选择

模型类

class CustomClass
{
     boolean checked;
     //other fields
}

在您的自定义适配器类中

ArrayList<CustomClass> data = new ArrayList<CustomClass>();

getView()方法中

checkboxItem.setChecked(data.get(position).getChecked());

别忘了更改checkbox change listener上的checked boolean值..

【讨论】:

  • 我不想实现长按部分。
  • 嘿!这是区分添加和删除的唯一方法吗?
  • 我确实尝试过,但我遇到了一个奇怪的问题:我在自定义 ListView 中添加了复选框。数据显示正常,但奇怪的问题是,当我检查列表中的第一行并向下滚动时,我可以看到另一个项目被选中。这发生在我清单上的第 7 项中。自动检查该项目。我无法解决这个问题,因此正在寻找不同的解决方案
  • 我确实遇到了同样的问题,我想我解决了使用自定义模型类并检查了用于检查/取消选中复选框的附加布尔字段的问题。
  • 你能帮我做一个关于这个的示例项目吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多