私はAndroidスタジオ2.1を使ってAndroidアプリケーションをコーディングし始めました。私のアプリは、SQLiteデータベース(基本的に2つのテーブルのメッセージと連絡先を構成します)を使用しています。record = valueの場合、HashMap <String、String>およびsetBackgroundResourceの値をチェックする方法は?
私は最後に、作成した連絡先からメッセージ交換のリストを入力する必要があります。私はそれらをリストアップすることができましたが、美学はありませんでした。タイプがLEFTまたはRIGHTのいずれかである場合はいつでも、別のsetBackgroundResourceを設定したいが、それを適用するのには苦労していた。以下 は私のコードです:
MessageRepo - SQLiteのDBhelper:
public ArrayList<HashMap<String, String>> getMessageListById(int fromid, int toid) {
SQLiteDatabase db = helper.getWritableDatabase();
String toquery = "SELECT " + MessageModel.messageId +
", " + MessageModel.fromId +
", " + MessageModel.toId +
", " + MessageModel.messageContent +
", 'RIGHT' AS type FROM " + MessageModel.tableMessage +
" WHERE " + MessageModel.toId +
" = ? AND " + MessageModel.fromId +
" = ? ";
String fromquery = "SELECT " + MessageModel.messageId +
", " + MessageModel.fromId +
", " + MessageModel.toId +
", " + MessageModel.messageContent +
", 'LEFT' AS type FROM " + MessageModel.tableMessage +
" WHERE " + MessageModel.fromId +
" = ? AND " + MessageModel.toId +
" = ? ";
String query = toquery +
" UNION " + fromquery +
" ORDER BY " + MessageModel.messageId;
ArrayList<HashMap<String, String>> messageList = new ArrayList<HashMap<String, String>>();
Cursor cursor = db.rawQuery(query, new String[]{String.valueOf(fromid), String.valueOf(toid), String.valueOf(fromid), String.valueOf(toid)});
if (cursor.moveToFirst()) {
do {
HashMap<String, String> messages = new HashMap<String, String>();
messages.put("messageId", cursor.getString(0));
messages.put("messageFromId", cursor.getString(1));
messages.put("messageToId", cursor.getString(2));
messages.put("messageContent", cursor.getString(3));
messages.put("type", cursor.getString(4));
messageList.add(messages);
} while (cursor.moveToNext());
}
cursor.close();
db.close();
return messageList;
}
メッセージ活動 - これは、リストビューに表示されるが、私は、ディスプレイにそれを意図した通りに動作しないでしょう。
ArrayList<HashMap<String, String>> messageList = messagehandler.getMessageListById(_fromid, _toid);
if (messageList.size() != 0) {
ListView listView = getListView();
if(messageList.contains("RIGHT")) {
listView.setBackgroundResource(R.drawable.right);
} else {
listView.setBackgroundResource(R.drawable.left);
}
ListAdapter adapter = new SimpleAdapter(MessageDetailActivity.this, messageList, R.layout.message, new String[]{"messageFromId", "messageToId", "messageContent"}, new int[]{R.id.FromId, R.id.ToId, R.id.message});
setListAdapter(adapter);
}
私は多くの投稿をチェックして、それが私のために機能するようには見えません: The constructor ArrayAdapter>>(Context, int, ArrayList>) is undefined Android Alternate row Colors in ListView
ありがとうございます!