2016-05-06 2 views
0

私は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

ありがとうございます!

答えて

0

もう少しリサーチした後。私は最終的にリストとセッター/ゲッタークラスを使用することで答えを見つけました:

関連する問題