java - 将 ArrayList 刷新为 ClickListener

标签 java android arraylist

我做了一个 question (已删除)之前,但我认为它非常困惑和难以理解,所以这个问题是关于同样的问题,但比以前更简单。

我做了一个同样情况的示例工程,有以下几项:

  • 一个 ArrayList,包含我所有的项目。
  • 另一个带有过滤项的 ArrayList。
  • 用于过滤项目的集合。

对于我的 Set 中的每个过滤项目,我创建一个新 View 以添加到我的主视图中。这些新 View 有一个 OnClickListener,理论上可以显示所有已过滤的项目。

问题是当我点击任何 View 时,结果都是一样的。

我的代码:

public class MainActivity extends Activity {

    private List<Integer> myList = new ArrayList<Integer>();
    private List<Integer> myFinalList;
    private Set<Integer> setOfAallCodes = new HashSet<Integer>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        myList.add(1);
        myList.add(1);
        myList.add(1);
        myList.add(2);
        myList.add(2);
        myList.add(2);

        listItems();
    }

    public void listItems() {
        myFinalList = new ArrayList<Integer>();
        for (Integer element : myList) {
            setOfAallCodes.add(element);
        }
        Object[] arrayOfAllCodes;
        arrayOfAllCodes = setOfAallCodes.toArray();
        for (Object i : arrayOfAllCodes) {
            myFinalList.clear();
            int actual = (Integer) i;
            for (Integer element : myList) {
                if (element == actual) {
                    myFinalList.add(element);
                }
            }
            LayoutInflater vi = (LayoutInflater) getApplicationContext().getSystemService(
                    Context.LAYOUT_INFLATER_SERVICE);
            View v = vi.inflate(R.layout.button_view, null);
            Button btnTest = (Button) v.findViewById(R.id.mega_button);
            View insertPoint = findViewById(R.id.conteudo);
            ((ViewGroup) insertPoint).addView(v);
            btnTest.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View v) {
                    System.out.println("Result: " + myFinalList);
                }
            });
        }
    }
}

两个按钮的结果是:[2, 2, 2]

怎么了?我该怎么做才能让按钮显示它们的结果?

最佳答案

我试试看。这不足以解决所有问题:

  1. 每个 View 都需要一个“myFinalList”,而不是一个全局 View 。现在,您所有的按钮都会打印同一个列表实例的内容。

  2. 请详细说明您的“过滤器”应该如何工作。您是否期望以下输出?

View 1 = [1,1,1], View 2 = [2,2,2]

关于java - 将 ArrayList 刷新为 ClickListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21732453/

相关文章:

java - 如何从 Firebase ListView 中的管理员帐户中删除用户帐户?

android - 连接耳机后如何将默认音频路由到耳机?

java - 如何将方法参数值直接存储到数组列表中,然后将其传递给另一个方法

java - HashSet 相对于 ArrayList 的优势,反之亦然

java - 并发HashMap : Can we trust on it?

java - 使用 JDBC 获取 BLOB 数据时出错

java - 需要有关同步的帮助

java - 如何决定runable的顺序

java - 访问另一个类的方法和属性而不实例化它

java - 在spring data jpa中获取非表实体的数据