所以我正在开发一个简单的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" />
}
根据预览,它应该是这样的:
但是,当我运行应用程序时,我会在视图中看到每条消息的EditText和Button。
数据是从SQLite DB提供的,它使用的是自定义消息模型。
我的格式是否导致EditText和Button重复?
答案 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
的布局,并在适配器中为该布局充气。