Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.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
android-如何检查布局中是否存在TextView?_Android_Android Layout - Fatal编程技术网

android-如何检查布局中是否存在TextView?

android-如何检查布局中是否存在TextView?,android,android-layout,Android,Android Layout,我有两种不同的布局,比如layou1.xml和layou2.xml。两个版面中的元素相同,但layout_2.xml还有一个额外的TextView 根据我的需要,只调用一个布局。我想检查textView是否在布局中可用 如果TextView可用,它应该执行TextView.setText(),否则将调用其他布局 请参考以下代码: @Override public void onBindViewHolder(SingleItemRowHolder holder, int i) { Sing

我有两种不同的布局,比如
layou1.xml
layou2.xml
。两个版面中的元素相同,但
layout_2.xml
还有一个额外的
TextView

根据我的需要,只调用一个布局。我想检查textView是否在布局中可用

如果TextView可用,它应该执行
TextView.setText()
,否则将调用其他布局

请参考以下代码:

@Override
public void onBindViewHolder(SingleItemRowHolder holder, int i) {
    SingleItemModel singleItem = itemsList.get(i);
    holder.tvTitle.setText(singleItem.getName());
    Picasso.with(mContext).load(singleItem.getUrl()).into(holder.itemImage);
    if (holder.lblDescription.getVisibility() == View.VISIBLE){
        holder.lblDescription.setText(singleItem.getDescription());
    }

}
文本视图
holder.lblDescription
位于
layout_2.xml
中,但不在
layout_1.xml

因此,
layout_2.xml
运行起来很轻松,但是当它调用
layout_1.xml
时,它会给我这个错误
试图在空对象引用上调用虚拟方法“java.lang.Class java.lang.Object.getClass()。

我知道,我执行的检查是错误的。所以,我需要帮助


提前谢谢

您得到了一个空指针异常,因为
lblDescription
没有绑定到
layou 1.xml
中不存在的任何内容。所以基本上你能做的就是检查

if(hold.lblDescription != null){
holder.lblDescription.setText(singleItem.getDescription());
}
而不是

 if (holder.lblDescription.getVisibility() == View.VISIBLE){
    holder.lblDescription.setText(singleItem.getDescription());
}
/**
*检查文本视图是否存在
*
*@param group:父布局id
*/
公共布尔值isTextViewPresent(视图组)
{
int count=group.getChildCount();
观点五;
for(int i=0;i
检查@NileshRathod我无法理解“findViewById(您的视图id)”如何帮助在布局中查找文本视图。如果您有一个小例子,它可能对我有帮助。谢谢如果我没有误解您的问题,您的意思是检查视图是否在屏幕上可见?例如,您有一个scrollview,如果视图在屏幕上还不可见,则该视图将返回false;
isTextViewPresent((ViewGroup)v)
如果由于其返回值被忽略而在此处不执行任何操作,则调用您的
,否则此代码将不起作用。@Twometer,isTextViewPresent((ViewGroup)v);我知道,调用此函数是为了检查嵌套布局中的textview,但此检查的结果完全被忽略。如果(isTextViewPresent((ViewGroup)v);)返回true,则将其更改为
。使用此代码,您不再忽略检查,并且如果首先有一个不包含TextView的视图组,然后有一个包含TextView的视图组,您也不会中断for循环。@Twometer您完全错了,提供的代码没有问题<代码>isTextViewPresent((视图组)v)返回布尔值及其不被忽略
/**
     * check textview is present or not
     *
     * @param group : parent layout id
     */
    public boolean isTextViewPresent(ViewGroup group)
    {
        int count = group.getChildCount();
        View v;
        for (int i = 0; i < count; i++)
        {
            v = group.getChildAt(i);
            if (v instanceof TextView)
            {
                return true;
            } else if (v instanceof ViewGroup)
                isTextViewPresent((ViewGroup) v);
        }
        return false;
    }