마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

sms 보관함 관련 질문인데요

0 추천
안녕하세요 sms 관련해서 작업중인데요

수신 발신 같은것은 다 정상적으로 해결을 했는데

그 문자를 보내거나 받으면 수신함에 저장되어 있자나요

각 번호별이나 이름별로 묶여서 터치하면 문자내용이 쭉나오고하는거요

일단 보관함을 따로 만들어서 수신이나 발신시 전화번호와 내용을 db에서 가져와서

리스트뷰에 쭉 뿌려주는거 까진 했는데 이걸 번호별로 그러니까 같은번호면 리스트뷰에

두개세개씩 나오는게 아니고 하나만 나오게 하고싶은데 어떻게해야할지 감이 잡히질 않아서 질문드립니다.

 

ackage com.mytest.testchat;

import java.util.ArrayList;

import android.app.Activity;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteException;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

public class Smsallview extends Activity {
   
 ListView list;
 dbHelper dbHelper;
 SQLiteDatabase db;
 String sql;
 Cursor cursor;
 ArrayList<String> Items;
 ArrayAdapter<String> Adapter;
 private String yousay, mysay, youphone, myphone;
 
  ArrayList<smsallviewListItem> arItem= new ArrayList<smsallviewListItem>();  //뷰합치기 관련
  
   
  @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.smsallview);
       
       
        //db 사용하겠다
        dbHelper = new dbHelper(this);
        try{
         db = dbHelper.getWritableDatabase();
        } catch (SQLiteException ex){
         db = dbHelper.getReadableDatabase();
        }
        //db사용하겠다
        list = (ListView)findViewById(R.id.list);
       
       
        list.setDivider(null);
  list.setTranscriptMode(ListView.TRANSCRIPT_MODE_ALWAYS_SCROLL);
      
  
  Cursor cursor;
      
  cursor = db.rawQuery("SELECT * FROM contact", null);
  
   
      
   while(cursor.moveToNext()){
       String sendphone = cursor.getString(1);
     String sendmgs = cursor.getString(2);
     String recephone = cursor.getString(3);
    String recemgs = cursor.getString(4);
    
     if((sendphone != null) && (sendmgs != null)){
       
        mysay =  "메시지:"+ sendmgs ;
    myphone = "전화번호:" + sendphone;
    
    arItem.add(new smsallviewListItem(1,"","",mysay,myphone));
        }
   
   if((recephone != null) && (recemgs != null)){
    
   
   yousay =  "메시지:"+ recemgs ;
   youphone = "전화번호:" + recephone;
   arItem.add(new smsallviewListItem(0,yousay,youphone,"",""));
   }
    smsallviewMultiAdapter MyAdapter = new smsallviewMultiAdapter(Smsallview.this,arItem);
    list.setAdapter(MyAdapter);
     }
   
  
  
  
   //if(cursor.getCount() > 0){
  //      list.setOnItemClickListener(new OnItemClickListener() {
         
 //  @Override
//   public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
//    cursor.moveToPosition(position);
 //   String str = cursor.getString(cursor.getColumnIndex("_id"));
 //   Toast.makeText(getApplicationContext(), str, Toast.LENGTH_SHORT).show();
  //   }
 // });               
       
  }

       
}

class smsallviewListItem{
 smsallviewListItem(int aType, String chat1, String chattime1, String chat2,String chattime2){
  Type = aType;
  UpChat = chat1;
  ChatTime1 = chattime1;
  DownChat = chat2;
  ChatTime2 = chattime2;
 }
 
 int Type;
 String UpChat;
 String ChatTime1;
 String DownChat;
 String ChatTime2;
 
}

class smsallviewMultiAdapter extends BaseAdapter{
 LayoutInflater mInflater;
 ArrayList<smsallviewListItem> arSrc;
 
 public smsallviewMultiAdapter(Context context, ArrayList<smsallviewListItem> arItem){
  mInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
  arSrc = arItem;
 }
 
 public int getCount(){
  return arSrc.size();
 }
 
 public smsallviewListItem getItem(int position){
  return arSrc.get(position);
 }
 
 public long getItemId(int position){
  return position;
 }
 
 public int getItemViewType(int position){
  return arSrc.get(position).Type;
 }
 
 public int getViewTypeCount(){
  return 2;
 }
 
 public View getView(int position, View convertView, ViewGroup parent){
  if(convertView == null){
   int res = 0;
   switch(arSrc.get(position).Type){
   case 0:
    res = R.layout.smsallviewlay1;
    break;
   case 1:
    res = R.layout.smsallviewlay2;
    break;
   }
   convertView = mInflater.inflate(res, parent,false);
  }
  
  switch(arSrc.get(position).Type){
  case 0:
   
   TextView name = (TextView)convertView.findViewById(R.id.name1);
   name.setText(arSrc.get(position).UpChat);
   TextView phone = (TextView)convertView.findViewById(R.id.phone1);
   phone.setText(arSrc.get(position).ChatTime1);
   break;
  case 1:
   
   TextView name2 = (TextView)convertView.findViewById(R.id.name2);
   name2.setText(arSrc.get(position).DownChat);
   TextView phone2 = (TextView)convertView.findViewById(R.id.phone2);
   phone2.setText(arSrc.get(position).ChatTime2);
   break;
  }
  
  return convertView;
 }
}

 

일단 이런식으로 코딩해서 보관함 클릭시 리스트뷰에[ 뿌려지ㄱ게는 헀습니다.

힌트라도 부탁드리곘습니다.
모하지모해 (300 포인트) 님이 2013년 5월 15일 질문

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...