익셉션이 뜨는데..
첨에는 어레이리스트의 값을 아무것도 안주고 커스텀리스트뷰를 띄워서 그런줄 알았는데
값을 줘도 리스트뷰조차 뜨지를 못하네요..
아래 소스입니다.
제발 조언 부탁드려요.
package com.example.ex_smsrc;
import java.util.ArrayList;
import android.os.Bundle;
import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import android.support.v4.app.NavUtils;
import android.telephony.SmsMessage;
public class MainActivity extends Activity {
public ArrayList<SmsInfo> smsList;
public MyListAdapter myAdapter;
public ListView list;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
list = (ListView) findViewById(R.id.listView1);
smsList = new ArrayList<SmsInfo>();
SmsInfo smsinfo;
smsinfo = new SmsInfo("테스트입니다.", "테스트");
smsList.add(smsinfo);
myAdapter = new MyListAdapter(this, R.layout.customlistlay, smsList);
list.setAdapter(myAdapter);
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
// IntentFilter intentFilter = new IntentFilter();
// intentFilter.addAction("android.provider.Telephony.SMS_RECEIVED");
registerReceiver(br, new IntentFilter(
"android.provider.Telephony.SMS_RECEIVED"));
}
@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
unregisterReceiver(br);
}
BroadcastReceiver br = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
Toast.makeText(getApplicationContext(), "BR 진입 완료", 1000).show();
// String result = "";
Bundle bundle = intent.getExtras();
if (bundle != null) {
Object[] pdus = (Object[]) bundle.get("pdus");
for (int i = 0; i < pdus.length; i++) {
SmsMessage msg = SmsMessage.createFromPdu((byte[]) pdus[i]);
// result += "보낸이" + msg.getOriginatingAddress() + "\n"
// + msg.getMessageBody() + "\n";
smsList.add(new SmsInfo(msg.getOriginatingAddress(),msg.getMessageBody()));
}
//txt.setText(result);
myAdapter.notifyDataSetChanged();
}
}
};
class SmsInfo { // innerClass
public String from;
public String smsBody;
public SmsInfo(String From, String Body) {
this.from = From;
this.smsBody = Body;
}
public String getFrom() {
return from;
}
public String getBody() {
return smsBody;
}
}
class MyListAdapter extends BaseAdapter {
Context maincon;
LayoutInflater Inflater;
ArrayList<SmsInfo> arSrc;
int layout;
public MyListAdapter(Context context, int alayout, ArrayList<SmsInfo> aarSrc) {
Toast.makeText(getApplicationContext(), "커스텀 리스트뷰 생성자 진입", 1000).show();
maincon = context;
Inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
arSrc = aarSrc;
layout = alayout;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return arSrc.size();
}
@Override
public String getItem(int position) {
// TODO Auto-generated method stub
return arSrc.get(position).getFrom();
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
final int pos = position;
if(convertView == null) {
convertView = Inflater.inflate(layout, parent, false);
}
TextView sendfrom = (TextView)findViewById(R.id.sendfrom);
sendfrom.setText(arSrc.get(position).getFrom());
TextView smsbody = (TextView)findViewById(R.id.smsbody);
smsbody.setText(arSrc.get(position).getBody());
return convertView;
}
}
}
로그캣 내용 추가합니다...ㅠㅠ
이렇게 올려드리는게 맞는지 잘 모르겠네요.ㅠㅠ
07-20 18:20:13.712: D/AndroidRuntime(7640): Shutting down VM
07-20 18:20:13.712: W/dalvikvm(7640): threadid=1: thread exiting with uncaught exception (group=0x4001e578)
07-20 18:20:13.720: E/AndroidRuntime(7640): FATAL EXCEPTION: main
07-20 18:20:13.720: E/AndroidRuntime(7640): java.lang.NullPointerException
07-20 18:20:13.720: E/AndroidRuntime(7640): at com.example.ex_smsrc.MainActivity$MyListAdapter.getView(MainActivity.java:156)
07-20 18:20:13.720: E/AndroidRuntime(7640): at android.widget.AbsListView.obtainView(AbsListView.java:1560)
07-20 18:20:13.720: E/AndroidRuntime(7640): at android.widget.ListView.measureHeightOfChildren(ListView.java:1265)
07-20 18:20:13.720: E/AndroidRuntime(7640): at android.widget.ListView.onMeasure(ListView.java:1176)
07-20 18:20:13.720: E/AndroidRuntime(7640): at android.view.View.measure(View.java:8366)
07-20 18:20:13.720: E/AndroidRuntime(7640): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138)
07-20 18:20:13.720: E/AndroidRuntime(7640): at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1017)
07-20 18:20:13.720: E/AndroidRuntime(7640): at android.widget.LinearLayout.measureVertical(LinearLayout.java:386)
07-20 18:20:13.720: E/AndroidRuntime(7640): at android.widget.LinearLayout.onMeasure(LinearLayout.java:309)
07-20 18:20:13.720: E/AndroidRuntime(7640): at android.view.View.measure(View.java:8366)
07-20 18:20:13.720: E/AndroidRuntime(7640): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138)
07-20 18:20:13.720: E/AndroidRuntime(7640): at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1017)
07-20 18:20:13.720: E/AndroidRuntime(7640): at android.widget.LinearLayout.measureVertical(LinearLayout.java:386)
07-20 18:20:13.720: E/AndroidRuntime(7640): at android.widget.LinearLayout.onMeasure(LinearLayout.java:309)
07-20 18:20:13.720: E/AndroidRuntime(7640): at android.view.View.measure(View.java:8366)
07-20 18:20:13.720: E/AndroidRuntime(7640): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138)
07-20 18:20:13.720: E/AndroidRuntime(7640): at android.widget.FrameLayout.onMeasure(FrameLayout.java:250)
07-20 18:20:13.720: E/AndroidRuntime(7640): at android.view.View.measure(View.java:8366)
07-20 18:20:13.720: E/AndroidRuntime(7640): at android.widget.LinearLayout.measureVertical(LinearLayout.java:531)
07-20 18:20:13.720: E/AndroidRuntime(7640): at android.widget.LinearLayout.onMeasure(LinearLayout.java:309)
07-20 18:20:13.720: E/AndroidRuntime(7640): at android.view.View.measure(View.java:8366)
07-20 18:20:13.720: E/AndroidRuntime(7640): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138)
07-20 18:20:13.720: E/AndroidRuntime(7640): at android.widget.FrameLayout.onMeasure(FrameLayout.java:250)
07-20 18:20:13.720: E/AndroidRuntime(7640): at android.view.View.measure(View.java:8366)
07-20 18:20:13.720: E/AndroidRuntime(7640): at android.view.ViewRoot.performTraversals(ViewRoot.java:844)
07-20 18:20:13.720: E/AndroidRuntime(7640): at android.view.ViewRoot.handleMessage(ViewRoot.java:1865)
07-20 18:20:13.720: E/AndroidRuntime(7640): at android.os.Handler.dispatchMessage(Handler.java:99)
07-20 18:20:13.720: E/AndroidRuntime(7640): at android.os.Looper.loop(Looper.java:130)
07-20 18:20:13.720: E/AndroidRuntime(7640): at android.app.ActivityThread.main(ActivityThread.java:3687)
07-20 18:20:13.720: E/AndroidRuntime(7640): at java.lang.reflect.Method.invokeNative(Native Method)
07-20 18:20:13.720: E/AndroidRuntime(7640): at java.lang.reflect.Method.invoke(Method.java:507)
07-20 18:20:13.720: E/AndroidRuntime(7640): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:842)
07-20 18:20:13.720: E/AndroidRuntime(7640): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
07-20 18:20:13.720: E/AndroidRuntime(7640): at dalvik.system.NativeStart.main(Native Method)
어디에뜨는지는 최소한알려주셔야ㅡ;
숨은그림찾기하는것도아니고 보는사람을 피곤하게만드시면ㅎㅎ
로그캣좀올려주세요