当前位置: 首页 > 面试题库 >

我可以在Android中使用2个具有相同ID的不同视图吗

燕寒
2023-03-14
问题内容

为TextView和ImageView设置相同的ID是否正确?由于它们属于一个实体,因此我给了他们两个相同的ID。如果是..那我怎么能分别通过id找到这些视图呢?


问题答案:

为TextView和ImageView设置相同的ID是否正确?

简短答案:

长答案:使用相同的ID 是 正确的,因为这样做可能会导致运行时错误。考虑下面的例子

layout.xml

        <TextView
            android:id="@+id/location"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="0dp"
            android:layout_marginTop="12dp" />

        <ImageView
            android:id="@+id/location"
            android:layout_width="70dp"
            android:layout_height="70dp"
            android:layout_marginStart="33dp"
            android:layout_marginTop="5dp"
            app:srcCompat="@drawable/openLoc" />

LocationActivity.java

setContentView(R.layout.activity_profile); //inflated layout
txtLocation = (TextView) findViewById(R.id.location);

在这里,您将在Activites中遇到问题,因为会混淆应该从两个元素中选择哪个元素。

顺便说一句 是的, 您可以在不同的布局中使用相同的ID,因为它不会产生任何运行时错误,因为它将仅在膨胀的布局中搜索ID。

编辑: 您可以在相同的布局中具有相同的ID。调用它时会导致问题,findViewById()并引发类似异常

java.lang.ClassCastException
android.support.v7.widget.AppCompatImageView cannot be cast to android.widget.TextView

建议:
我不知道为什么要为两个元素分配相同的ID,但是如果您希望可读性,那么我建议您以一种可以通过ID轻松识别元素的方式设置ID,就像android:id="@+id/txtLocation"
android:id="@+id/imgLocation"这样可以轻松识别元素类型只需阅读ID。您可以通过在开头添加布局名称来使操作更加容易android:id="@+id/profileTxtLocation"。现在,这将为您提供帮助,而编码为自动完成功能将为您提供帮助。只需键入布局名称,您将获得所有布局元素的列表,然后您将键入元素的类型,从而获得布局中所有要求的元素(例如:textViews)的列表。



 类似资料:
  • 问题内容: 为TextView和ImageView设置相同的ID是否正确?由于它们属于一个实体,因此我给了他们两个相同的ID。如果是..那我怎么能分别通过id找到这些视图呢? 问题答案: 为TextView和ImageView设置相同的ID是否正确? 简短答案: 否 长答案:使用相同的ID 是 不 正确的,因为这样做可能会导致运行时错误。考虑下面的例子 layout.xml LocationAct

  • 我需要在两个活动中使用相同的ArrayAdapter。在MainActivity中,我只需要显示isConsumido()=true的项,而在另一个活动中,我需要显示所有项。 我的MainActivity适配器: 现在,我使用两个适配器,但是当我在TelaCadastrados的一个适配器项中检查isConsumido()时,MainActivity中的同一项需要变为不可见,而当我删除TelaCa

  • 问题内容: 我正在使用基于SDK演示示例中EfficientAdapter示例的BaseAdapter扩展版本。 我的数据基本上是一个对象(),其中包含一个,其中包含实际的地点列表,可通过访问。此ArrayList数据按范围排序,由一些特殊项目(分隔符)组成,没有数据,但标志设置为。 现在,每当我得到一个作为分隔符的数据对象时,它都会返回并根据当前数据对象是由真实数据组成还是仅仅是分隔符虚拟物来使

  • 我正在开发一款Android应用程序,我使用Firestore存储数据。我有一个用户集合,每个用户都有一个称为Posts的子集合。有没有办法从所有用户那里检索所有帖子,并将其显示在我的应用程序提要上?

  • 问题内容: 这样的情况有效吗? 问题答案: 没有。 元素ID在整个文档中应该是唯一的。

  • 问题内容: 我了解到,要最大程度地提高Android列表视图的效率,您应该只拥有尽可能多的膨胀“行”视图以适合屏幕显示。视图移出屏幕后,应在您的方法中重用它,检查是否为null。 但是,当列表需要2种不同的布局时,如何实现此想法?可以说它的订单列表,其中一个布局用于已完成的订单,另一个布局用于在处理中的订单。 这是我的代码正在使用的想法的示例教程。就我而言,我将有2行布局:和 问题答案: 您需要让