Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 代码改进:视图列表_Java_Android_Arrays_Textview - Fatal编程技术网

Java 代码改进:视图列表

Java 代码改进:视图列表,java,android,arrays,textview,Java,Android,Arrays,Textview,我有以下代码: public class Klasse { TextView[] tvAuftrag = new TextView[5]; ImageView[] ivStatus = new ImageView[5]; CardView[] cvAuftrag = new CardView[5]; private void initialize() { tvAuftrag[0] = findViewById(R.id.tvAuftrag1); tvAuftra

我有以下代码:

public class Klasse {
  TextView[] tvAuftrag = new TextView[5];
  ImageView[] ivStatus = new ImageView[5];
  CardView[] cvAuftrag = new CardView[5];

  private void initialize() {
    tvAuftrag[0] = findViewById(R.id.tvAuftrag1);
    tvAuftrag[1] = findViewById(R.id.tvAuftrag2);
    tvAuftrag[2] = findViewById(R.id.tvAuftrag3);
    tvAuftrag[3] = findViewById(R.id.tvAuftrag4);
    tvAuftrag[4] = findViewById(R.id.tvAuftrag5);
    ivStatus[0] = findViewById(R.id.ivStatus1);
    ivStatus[1] = findViewById(R.id.ivStatus2);
    ivStatus[2] = findViewById(R.id.ivStatus3);
    ivStatus[3] = findViewById(R.id.ivStatus4);
    ivStatus[4] = findViewById(R.id.ivStatus5);
    cvAuftrag[0] = findViewById(R.id.cvAuftrag1);
    cvAuftrag[1] = findViewById(R.id.cvAuftrag2);
    cvAuftrag[2] = findViewById(R.id.cvAuftrag3);
    cvAuftrag[3] = findViewById(R.id.cvAuftrag4);
    cvAuftrag[4] = findViewById(R.id.cvAuftrag5);
  }
}
是否有更好的解决方案将视图初始化为数组?我尝试了一个ArrayList,比如:

public class Klasse {
  List<TextView> tvAuftrag = ArrayList<>();

  private void initialize() {
    tvAuftrag.add(findViewById(R.id.tvAuftrag1));
    tvAuftrag.add(findViewById(R.id.tvAuftrag2));
    tvAuftrag.add(findViewById(R.id.tvAuftrag3));
    tvAuftrag.add(findViewById(R.id.tvAuftrag4));
    tvAuftrag.add(findViewById(R.id.tvAuftrag5));
  }
}
公共类Klasse{
List tvAuftrag=ArrayList();
私有void初始化(){
tvAuftrag.add(findviewbyd(R.id.tvAuftrag1));
tvAuftrag.add(findviewbyd(R.id.tvAuftrag2));
tvAuftrag.add(findviewbyd(R.id.tvAuftrag3));
tvAuftrag.add(findviewbyd(R.id.tvAuftrag4));
tvAuftrag.add(findviewbyd(R.id.tvAuftrag5));
}
}
也许这比上面的解决方案好一点,但它不起作用。或者甚至可以使用循环?那么身份证必须是我的,我想,但这怎么可能呢?
如有任何需要了解的帮助或新信息,将不胜感激

//如果它不是数组,则要将其保存在列表中

public class Klasse {
  List<TextView> tvAuftrag = new ArrayList<>();

  private void initialize() {
    tvAuftrag.add((TextView)findViewById(R.id.tvAuftrag1));
    tvAuftrag.add((TextView)findViewById(R.id.tvAuftrag2));
    tvAuftrag.add((TextView)findViewById(R.id.tvAuftrag3));
    tvAuftrag.add((TextView)findViewById(R.id.tvAuftrag4));
    tvAuftrag.add((TextView)findViewById(R.id.tvAuftrag5));
  }
}
公共类Klasse{
List tvAuftrag=new ArrayList();
私有void初始化(){
添加((文本视图)findViewById(R.id.tvAuftrag1));
添加((文本视图)findViewById(R.id.tvAuftrag2));
添加((文本视图)findViewById(R.id.tvAuftrag3));
添加((文本视图)findViewById(R.id.tvAuftrag4));
添加((文本视图)findViewById(R.id.tvAuftrag5));
}
}

在循环中添加视图,如:

    TextView[] tvAuftrag = new TextView[5];
    ImageView[] ivStatus = new ImageView[5];
    CardView[] cvAuftrag = new CardView[5];

    int id = 0;

    for (int i = 0; i < tvAuftrag.length; i++) {
        id = getResources().getIdentifier("tvAuftrag" + (i + 1), "id", getPackageName());
        tvAuftrag[i] = findViewById(id);
        id = getResources().getIdentifier("ivStatus" + (i + 1), "id", getPackageName());
        ivStatus[i] = findViewById(id);
        id = getResources().getIdentifier("cvAuftrag" + (i + 1), "id", getPackageName());
        cvAuftrag[i] = findViewById(id);
    }
TextView[]tvAuftrag=newtextView[5];
ImageView[]ivStatus=新ImageView[5];
CardView[]cvAuftrag=新的CardView[5];
int id=0;
对于(int i=0;i

如果3个数组的长度不相同,则必须有3个相似但不同的循环。

您可以使用和
@BindViews
这可能是最有希望的解决方案,但您和Veysel Sebu的两个解决方案的混合可能是解决此问题的明智方法。我会在接下来的6小时内检查