如何使用不同的资源ID以编程方式创建相同类型的多个视图

时间:2015-08-11 07:11:48

标签: android android-layout view

我想创建多个相同类型的视图。我创建了一个视图。

LinearLayout mainRoot = (LinearLayout) findViewById(R.id.wrapper);    

这是父布局。我想在主根目录下创建多个视图。我可以使用add方法添加自定义视图。但是我应该如何处理资源ID。

我不知道如何访问单个项目,因为它们都具有相同的ID。

感谢。

3 个答案:

答案 0 :(得分:1)

您可以使用setTag()方法为您创建的视图设置一些标记。

然后,当您想要访问这些视图时,可以使用findViewWithTag()来获取您要查找的视图。

更新:

        LinearLayout mainRoot = (LinearLayout) findViewById(R.id.wrapper);
        for (int i = 0; i < numCustomViews; i++) {
            View customView = new View(this);
            customView.setTag(i);
            mainRoot.addView(customView);
        }

        // Find view with tag 4
        View view5 = mainRoot.findViewWithTag(4);
        Log.d("XXX", view5.toString());

答案 1 :(得分:1)

您可以做的是使用 setId

为每个视图设置ID
Button btn=new Button(this);
btn.setId(1);
Button btn1=new Button(this);
btn.setId(2);
your_linear_Layout.add(btn);
your_linear_Layout.add(btn1);

现在在你的onClick方法

@Override
 public void onClick(View v) {
  switch(v.getId()){

     case 1:

        //btn clicked
       break;
     case 2:

       // btn1 clicked.
       break;

  }  
 }

答案 2 :(得分:1)

使用RecyclerView而不是自定义视图。 1.您可以在RecyclerView中添加和删除。 2.你将获得ClickEvent。 3. Recycler View可根据您的要求垂直或水平。

完成此Sample of RecyclerView