为什么布局导致列表视图中的文本视图消失?

时间:2013-11-13 05:28:55

标签: android android-layout android-listview layout-inflater

所以我使用自定义ArrayAdapter实现,这样我就可以访问listview元素中的切换按钮。

每个listview都有一个textview和一个切换按钮。我必须使用附加到列表视图的自定义ArrayAdapter,以便我可以获得附加到单击的列表视图位置的正确切换按钮。然而,每次我扩展布局以获取视图时,列表视图中的textview正在消失。值仍然存在,但textview不是。然而,切换按钮显示正常。这是用于扩充布局并获取视图的代码:

    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {
        View v = convertView;
        if (v == null) {
            LayoutInflater inflater = ((Activity)context).getLayoutInflater();
            v = inflater.inflate(R.layout.activity_alarm_item, parent, false);
        }
        ToggleButton toggle = (ToggleButton) v.findViewById(R.id.alarm_status);
        toggle.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                if (isChecked) {
                    Log.d("ENABLE ALARM", Integer.toString(position));
                    enableAlarm(position);
                } else {
                    disableAlarm(position);
                }

            }
        });
        return v;
    }

对于使布局膨胀的两条线有什么问题吗?

布局很好。我恢复原来的适配器,textview文本重新启动。

但是,这是活动布局:

<?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginTop="5dp"
        android:layout_marginBottom="5dp" >

    <TextView
        android:id="@+id/time"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_centerVertical="true"
        android:textIsSelectable="false"
        android:textSize="20sp"
        android:paddingLeft="5dp" />


    <ToggleButton
        android:id="@+id/alarm_status"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:clickable="true"
        android:onClick="enableAlarm"
        android:background="?android:attr/selectableItemBackground"
        android:focusable="false" />

    <TextView
        android:layout_width="1px"
        android:layout_height="fill_parent"
        android:layout_toLeftOf="@id/alarm_status"
        android:layout_centerVertical="true"
        android:background="?android:attr/dividerVertical" />

    </RelativeLayout>

2 个答案:

答案 0 :(得分:2)

您将文字设置为TextView的位置? TextView似乎是空的。这就是为什么它不显示我猜。

在Xml文件本身中将文本设置为TextView

android:text ="text"

getView函数内部

TextView textView = (TextView) v.findViewById(R.id.time);
textView.setText("Text");

答案 1 :(得分:0)

在评论中写的时间太长,我试着回答。我不确定你是否正确地获得了上下文。我个人在自定义适配器中声明布局inflater如下:

private LayoutInflater mInflater = (LayoutInflater)   
                getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

然后我使用getView()中的inflater如下

v = mInflater.inflate(R.layout.activity_alarm_item, parent, false);

告诉我,如果它解决了你的问题,我会删除我的答案。