无法在方法括号内放置新的List

时间:2018-03-18 22:59:16

标签: java list

塞纳里奥:

所以我试图通过将一行代码组合成一行来简化设置大量TextViews不可见的用法,因此决定制作一个获得List<TextView>的方法并将它们全部转换为无形。我做了一个测试类来显示错误。 (下面的问题)

方法:

 private void makeTextViewsInvisible(List<TextView> listOfTextViews){
    int i= 0;
    while(i < listOfTextViews.size()){
        listOfTextViews.get(i).setVisibility(View.INVISIBLE);
        i++;
    }
}

使用方法:

makeTextViewsInvisible(new List<t1,t2,t3>()) ;
            //Dose'nt work?
            //I don't want to define : (List<TextView> a  = new ...) And add TextViews manually (a.add(TextView1)...)
            //I want to add all three TextViews in one line of code inside the brackets

问题是,我无法在括号内设置new List,我需要制作一个全新的List并手动添加所有TextViews (通过使用List.add();),可以简化我的代码。有什么方法可以在括号内创建一个新的List吗?

2 个答案:

答案 0 :(得分:1)

语法

  

makeTextViewsInvisible(new List())

不正确。 您显然不了解List初始化的语法。 如果你想在给定类型的列表中插入三个元素(在你的情况下,我认为它是List<TextViews>)你必须初始化它(类型TextViews的列表)。请注意,您可能不希望实例化List,因为它是一个接口,您必须实现List接口的每个方法,例如add(), get(), indexOf()等。我建议您通过ArrayList作为你的函数参数。假设t1,t2,t3已经定义了TextViews类型的对象。要实例化ArrayList<TextViews>,您需要以下语法:

ArrayList<TextViews> exampleList= new ArrayList<>(Arrays.asList(t1,t2,t3));

您必须将数组作为列表的构造函数传递,您可以使用Arrays.asList()静态方法轻松执行此操作。话虽如此,方法调用的语法如下所示:

makeTextViewsInvisible(new ArrayList<TextViews>(Arrays.asList(t1,t2,t3));

答案 1 :(得分:0)

如果要使用这个库,你可以这样做...... org.apache.commons

然后应该可以像这样调用你的方法。

List<String> newList = ListUtils.union(list1,list2);


makeTextViewsInvisible(ListUtils.union(t1,t2,t3));