Android FindViewById仅适用于子布局(listview行),而不适用于父布局中的文本视图

Android FindViewById仅适用于子布局(listview行),而不适用于父布局中的文本视图,android,android-layout,android-listview,android-view,findviewbyid,Android,Android Layout,Android Listview,Android View,Findviewbyid,我猜我的问题在于膨胀的布局。我有2个布局文件: 活动_mail.xlm: 。。。和列表项_device.xlm: 在我的主要java文件中,我有: @覆盖 创建时的公共void(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); .... @凌驾 公共视图getView(int i、视图视图、视图组视图组){ 持票人持票人; 如果(视

我猜我的问题在于膨胀的布局。我有2个布局文件:

活动_mail.xlm:


。。。和列表项_device.xlm:


在我的主要java文件中,我有:

@覆盖
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
....
@凌驾
公共视图getView(int i、视图视图、视图组视图组){
持票人持票人;
如果(视图==null){
view=mInflator.充气(R.layout.listitem\u设备,空);
viewHolder=新的viewHolder();
viewHolder.deviceAddress=(TextView)view.findViewById(R.id.device_label);//来自listitem_device.xml
viewHolder.profileScont=(TextView)view.findViewById(R.id.profileScont);//来自activity_main.xml
问题在于后续代码:

viewHolder.profilesCount.setText("HELLO");
在空对象引用上生成错误“尝试调用虚拟方法”void android.widget.TextView.setText(java.lang.CharSequence)”


如何修复此问题?

我看不到任何地方有id为“profilesCount”的视图。在布局文件中只有设备标签和设备服务作为id,用于扩大列表视图的行。更好地使用回收器视图,它提供了更大的灵活性

此外,您无法在适配器的getView()函数中从activity_mail.xml访问某些内容,因为在getfunction中使用“view”,因为它只对应于列表视图的行,并且由于与列表视图的行关联的xml文件中不存在该id,因此您将获得“viewholders.profileCount”为null,因此为null指针异常


如果您想在适配器中使用TextView或任何视图,最好在活动中创建一个接口并实现该接口以用作回调,然后设置activity.xml文件的TextView字段,这是保持代码更干净的最佳方法。另一种方法是将活动的引用传递给适配器,然后查找文本视图或您想从Activity_mail.xml文件中使用的任何内容,但不推荐使用,这是一种非常糟糕的方式,因为它可能需要额外的内存。

My bad:我只包含了一段代码。我已更新了问题,以显示id为“ProfileScont”的视图。感谢您的回复。您让我意识到我犯了一个愚蠢的错误,我们无法在view函数中定义非listview项的TextView。我已将其移动到onCreate,现在可以正常工作。没问题,发生了这种情况:)