안녕하세요 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;
}
}
일단 이런식으로 코딩해서 보관함 클릭시 리스트뷰에[ 뿌려지ㄱ게는 헀습니다.
힌트라도 부탁드리곘습니다.