检查值是不是存在的数组列表,如果存在则将 1 添加到字符串

Posted

技术标签:

【中文标题】检查值是不是存在的数组列表,如果存在则将 1 添加到字符串【英文标题】:Array list checking if value exists, if exists add 1 to string检查值是否存在的数组列表,如果存在则将 1 添加到字符串 【发布时间】:2016-01-21 01:33:56 【问题描述】:

假设我有一个名为 listitem 的数组列表,每次单击 GridView 时它都会更新。 它获取被单击的GridView 的项目并将其添加到数组列表中,该列表也用作ListView 的适配器的后备数组。 这工作正常,但不是将相同的行添加到ListView,我想在单击两次时显示类似item_clicked (2) 的消息, 如果再次点击它会显示item_clicked (3)等等。

我试图用这段代码来解决这个问题:

public void addItems(int position) 
    if (listItems.contains(value.get(position))) 
        int index = listItems.indexOf(value.get(position));
        listItems.set(index,value.get(position)); <- here
     else 
        listItems.add(value.get(position));
        adapter.notifyDataSetChanged();
    

positionGridView 的索引,valuesGridView 值的数组。

这是我的GridView 代码:

        int index = 0;
        while (rs.next()) 
            value.add("ID :" + rs.getString(1) + "  Nombre:" + rs.getString(3));
            list2.add(values.get(index));
            index++;
            Log.w("query result: ", rs.getString(1));
        
        ArrayAdapter adapter = new ArrayAdapter(papeleta_act.this, R.layout.list_item, list2);
        grid.setAdapter(adapter);
        grid.setOnItemClickListener(new AdapterView.OnItemClickListener() 
            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                                    int position, long id) 

                addItems(position);

            
        );
     catch (Exception e) 
        Log.w("My error;", e);
    

我将不胜感激有关如何处理此问题的任何想法。 提前致谢!

【问题讨论】:

【参考方案1】:

为了简单起见,我们假设GridView 中的所有项目都是单一类型,我们称之为A。在这种情况下,ArrayList 包含 A 类型的项目。

A 简单的解决方案是让listitem 包含包装A 的类型的对象,并且还有一个计数器,用于单击的时间。可能的实现是:

public class B 
    public A mA;
    public int times_clicked;

如何在ListView 中显示点击次数取决于您对布局的实现。 ArrayAdapter 的默认行为是检查给定布局的根元素是否为 TextView,然后将其文本设置为它所显示项目的 toString() 函数的结果,因此您可以将此方法添加到类B

public String toString()
     if(times_clicked == 1 && A != null)
         return A.toString();
     else
         return "item_clicked ("+times_clicked+")";

【讨论】:

好的,我只试一个问题。这不会触发将要添加到列表视图的所有元素吗? 是的,我稍微编辑了一下。但总的来说,这是你应该做的大方向。即使一个项目被多次点击,您可能仍希望显示A.toString()。您可能还希望最终摆脱默认行为,***.com/questions/2265661/… 对此进行了解释 我想尝试实现这一点,但不是今天,我有一些事情要做和完成,但我会让你知道明天发生了什么 不是我真正想要的,但它是一个很好的解决方法,而且效果很好,非常感谢!

以上是关于检查值是不是存在的数组列表,如果存在则将 1 添加到字符串的主要内容,如果未能解决你的问题,请参考以下文章

检查 JSON 密钥是不是存在

检查列表中的对象是不是存在,如果在 R 中不存在则将其删除

如果它是一个函数,则将值推送到 javascript 数组的问题

检查一列中的值是不是存在于另一列中,如果存在,则将另一列中的值复制到新列中

使用 C# 检查 List 中是不是存在值

Google Apps 脚本 - 检查表是不是存在,如果存在则将其删除,检查删除作业是不是完成