Android用のメッセージングアプリのようなものを開発しています。メッセージがデータベースからカスタム リスト ビューに読み込まれると、問題なく表示されます。Androidのネイティブメッセージアプリと同じように表示させたいです。9Patch を使用して、送信者と受信者の 2 つのイメージが既にあります。この画像http://s21.postimg.org/bj6idzdaf/example.pngのように表示したい。しかし、現在、私はこのhttp://s23.postimg.org/805pfdxqz/example1.pngを持っています。行のコードは次のとおりです。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/chatLinearLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/me"
android:orientation="vertical" >
<!-- User and CreatedAt -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:paddingBottom="0dp" >
<TextView
android:id="@+id/textUser"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="User"
android:textSize="15sp" />
<TextView
android:id="@+id/textCreatedAt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Less than a minute"
android:textSize="10sp" />
</LinearLayout>
<!-- Message -->
<TextView
android:id="@+id/textText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingTop="0dp"
android:text="I'm text"
android:textSize="12sp" />
</LinearLayout>
レイアウトのコードは次のとおりです。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<ListView
android:id="@+id/listTimeline"
android:layout_width="fill_parent"
android:layout_height="0dip"
android:layout_weight="1"
android:divider="#FFFFFF"
android:dividerHeight="1dp"
android:listSelector="@drawable/list_selector" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<EditText
android:id="@+id/messageText"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="1"
android:ems="10"
android:hint="@string/sendTextBoxHint" />
<Button
android:id="@+id/buttonSend"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/buttonSend" />
</LinearLayout>
</LinearLayout>
リストビューでメッセージを取得して表示するコードは次のとおりです
class getAndDisplayMessages extends Thread {
@Override
public void run() {
while (!stopCheckingForMessages) {
try {
theApp.appData.openReadableDatabase();
cursor = theApp.appData.getMessages(user,
TheApplication.screenName);
Log.d(TAG, "cursor containing " + cursor.getCount()
+ " rows");
if (cursor == null) {
return;
}
startManagingCursor(cursor);
ChatActivity.this.runOnUiThread(new Runnable() {
@SuppressWarnings("deprecation")
public void run() {
String[] FROM = { AppData.T_TIME,
AppData.SENDER_SCREEN_NAME,
AppData.MESSAGES };
int[] TO = { R.id.textCreatedAt, R.id.textUser,
R.id.textText };
adapter = new SimpleCursorAdapter(
ChatActivity.this, R.layout.chat_row,
cursor, FROM, TO);
adapter.setViewBinder(VIEW_BINDER);
listTimeline.setAdapter(adapter);
listTimeline.setSelection(adapter.getCount()-1);
}
});
Thread.sleep(DELAY);
} catch (Exception e) {
Log.e(TAG,
"Error Occured while checking for updated messages. \nErrorMessage:"
+ e.getMessage());
}
}
}
}