XML未按预期显示

时间:2015-07-29 03:25:51

标签: android xml

所以我正在开发一个简单的SMS / GCM应用程序的消息视图。

我的XML编写如下:

F

编辑:这是适配器类

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
android:orientation="horizontal"
tools:context="jp.mcs.smsmessanger.MainActivity">

<ListView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/list"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_above="@+id/button">
</ListView>

<TextView android:id="@+id/message_body"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="8dp"
    android:textAppearance="?attr/textAppearanceListItem"
    android:focusableInTouchMode="false"
    android:clickable="false"
    android:focusable="false" />

<Button android:id="@+id/button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/button_send"
    android:layout_alignParentBottom="true"
    android:layout_alignRight="@+id/list"
    android:layout_alignEnd="@+id/list" />

<EditText android:id="@+id/edit_text"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:hint="@string/sending"
    android:layout_alignParentBottom="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:layout_toStartOf="@+id/button"
    android:layout_toLeftOf="@+id/button" />

}

根据预览,它应该是这样的:

XML Preview

但是,当我运行应用程序时,我会在视图中看到每条消息的EditText和Button。

数据是从SQLite DB提供的,它使用的是自定义消息模型。

我的格式是否导致EditText和Button重复?

1 个答案:

答案 0 :(得分:0)

使用自定义适配器时,必须使用两种布局。

一个用于放置列表视图和其他视图。

一个用于在适配器中充气。

您的问题是您在两种操作中使用相同的布局。

您可能不需要自定义适配器来在每个视图中显示单个文本。 删除自定义适配器并在您的活动中尝试此代码。

        ArrayList<String> list = new ArrayList<String>();
        for (Message msg : messages) {
            list.add(message.message);
        }
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(context,
                android.R.layout.simple_list_item_1, list);
        yourListView.setAdapter(adapter);

如果您仍然需要自定义适配器,请创建一个包含单个TextView的布局,并在适配器中为该布局充气。