안녕하세요.. 일단 관련된 풀소스를 올립니다.
------------------------------< ListView_adapter .java>----------------------------------------
class ListView_adapter extends BaseAdapter{
private Context context;
private ArrayList<Bean_listView> items;
private LayoutInflater inflater;
public ListView_adapter(Context c , ArrayList<Bean_listView> itmes){
this.context = c;
this.inflater = LayoutInflater.from(c);
this.items = items;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
ViewHolder holder = null;
Bean_listView pos = items.get(position);
if (v == null) {
holder = new ViewHolder();
v = inflater.inflate(R.layout.custom_listview, null);
holder.txt1 = (TextView)v.findViewById(R.id.txt1);
holder.txt2 = (TextView)v.findViewById(R.id.txt2);
v.setTag(holder);
}else{
holder = (ViewHolder) v.getTag();
}
holder.txt1.setText(pos.txt1);
holder.txt2.setText(pos.txt2);
return v;
}
@Override
public int getCount() {
return items.size();
}
@Override
public Bean_listView getItem(int position) {
return items.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
class ViewHolder{
TextView txt1;
TextView txt2;
}
}
-----------------------------<Bean_listView.java>-------------------------------------------------------------
public class Bean_listView {
public String txt1;
public String txt2;
public Bean_listView(String txt1, String txt2) {
this.txt1 = txt1;
this.txt2 = txt2;
}
public String getTxt1(){
return txt1;
}
public String getTxt2(){
return txt2;
}
}
---------------------------------------<메인 입니다.>----------------------------------------------
public class main extends Activity implements ViewPager.OnPageChangeListener{
private ListView list;
private ListView_adapter listAdpater;
private int position;
private static ViewPager pager;
private ArrayList<Bean_listView> array;
private int[] xmlRes = {R.layout.month_one, R.layout.month_two, R.string.month_one, R.string.month_two};
protected void onCreate(Bundle b){
super.onCreate(b);
setContentView(R.layout.common_main);
pager = (ViewPager)findViewById(R.id.pager);
pager.setAdapter(new mViewPager(this));
pager.setOnPageChangeListener(this);
array = new ArrayList<Bean_listView>();
array.add(new Bean_listView("생일 파티", "2012-08-30"));
array.add(new Bean_listView("생일 파티", "2012-08-30"));
array.add(new Bean_listView("생일 파티", "2012-08-30"));
array.add(new Bean_listView("생일 파티", "2012-08-30"));
array.add(new Bean_listView("생일 파티", "2012-08-30"));
array.add(new Bean_listView("생일 파티", "2012-08-30"));
array.add(new Bean_listView("생일 파티", "2012-08-30"));
array.add(new Bean_listView("생일 파티", "2012-08-30"));
array.add(new Bean_listView("생일 파티", "2012-08-30"));
array.add(new Bean_listView("생일 파티", "2012-08-30"));
array.add(new Bean_listView("생일 파티", "2012-08-30"));
}
class mViewPager extends PagerAdapter{
private LayoutInflater mInflater;
public mViewPager(Context con) {
super();
mInflater = LayoutInflater.from(con);
}
@Override public int getCount() { return xmlRes.length-2; }
@Override
public Object instantiateItem(View pager, int position) {
View v = null;
if(position==0){
v = mInflater.inflate(xmlRes[0], null);
list = (ListView)v.findViewById(R.id.listView);
listAdpater = new ListView_adapter(month.this, array);
list.setAdapter(listAdpater);
}else if(position==1){
v = mInflater.inflate(xmlRes[1], null);
}
((ViewPager)pager).addView(v, 0);
return v;
}
@Override
public void destroyItem(View pager, int position, Object view) {
((ViewPager)pager).removeView((View)view);
}
@Override public boolean isViewFromObject(View view, Object obj) { return view == obj; }
@Override public void finishUpdate(View arg0) {}
@Override public void restoreState(Parcelable arg0, ClassLoader arg1) {}
@Override public Parcelable saveState() { return null; }
@Override public void startUpdate(View arg0) {}
}
@Override
public void onPageScrollStateChanged(int arg0) {}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {}
@Override
public void onPageSelected(int pos) {
position = pos;
if(position == 0) Common_topMnu.setChgImg(0);
else Common_topMnu.setChgImg(1);
}
메인xml입니다.---------------<common_main.xml>--------------------------------------------
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<xx.xxxxx.xxxxxx.Common_topMnu
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:layout_weight="7" />
<android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:layout_weight="1"/>
</LinearLayout>
ViewPager에 넣을 레이아웃입니다.---------------------------<month_one.xml>--------------------------------------------------------------------------------
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:layout_weight="15"
android:background="#70658B"
android:orientation="horizontal" >
<TextView
android:layout_width="match_parent"
android:layout_height="fill_parent"
android:gravity="center"
android:text="제 목"
android:textColor="#FFFFFF"
android:textSize="18sp"
android:layout_weight="1"/>
<TextView
android:layout_width="match_parent"
android:layout_height="fill_parent"
android:gravity="center"
android:text="행사일"
android:textColor="#FFFFFF"
android:textSize="18sp"
android:layout_weight="1"/>
</LinearLayout>
<ListView
android:id="@+id/listView"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:divider="#D3D3D3"
android:dividerHeight="0.5dp"
android:footerDividersEnabled="false"
android:fadingEdge="none"
android:padding="0.5dp"
android:layout_weight="1"/>
</LinearLayout>
에러
08-31 10:13:25.852: E/AndroidRuntime(12282): FATAL EXCEPTION: main
08-31 10:13:25.852: E/AndroidRuntime(12282): java.lang.NullPointerException
08-31 10:13:25.852: E/AndroidRuntime(12282): at xx.xxxx.xxxx.ListView_adapter.getCount(ListView_adapter.java:42)
08-31 10:13:25.852: E/AndroidRuntime(12282): at android.widget.ListView.setAdapter(ListView.java:436)
08-31 10:13:25.852: E/AndroidRuntime(12282): at xx.xxxx.xxxx.main$mViewPager.instantiateItem(main.java:75)
08-31 10:13:25.852: E/AndroidRuntime(12282): at android.support.v4.view.PagerAdapter.instantiateItem(PagerAdapter.java:110)
08-31 10:13:25.852: E/AndroidRuntime(12282): at android.support.v4.view.ViewPager.addNewItem(ViewPager.java:649)
08-31 10:13:25.852: E/AndroidRuntime(12282): at android.support.v4.view.ViewPager.populate(ViewPager.java:783)
08-31 10:13:25.852: E/AndroidRuntime(12282): at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1016)
08-31 10:13:25.852: E/AndroidRuntime(12282): at xx.xxx.xxxx.xxxx$mViewPager.instantiateItem(main.java:75)
커스텀ListView를 Viewpager안에 넣을려니까 오류가 납니다..
BaseAdapter로 구현한 ListView는 문제가 없는거 같은데..
왜 Null이 뜨는지 모르겠습니다.
그리고 list.setAdapter(listAdpater); 이부분이 왜 mViewPager.instantiateItem오류가 나는건가요...
이리저리해봐도 안되네요 ㅠ
답변 감사합니다 ^^
자답입니다..
private ArrayList<Bean_listView> items;
private LayoutInflater inflater;
public ListView_adapter(Context c , ArrayList<Bean_listView> itmes){
this.context = c;
this.inflater = LayoutInflater.from(c);
this.items = items; 에서
items에 warring이 떠있었네요...
변수값 바꾸고 다시 기존 변수이름 사용 하니까 warring는 없어지고... ㅡㅡ;;;;
실행 잘됩니다 ㅡㅡ
뭐가 문제인지 혹시 아시는분 계시는지요?




ListView_adapter.getCount() 가 null 이라는군요.
ListView_adapter의 생성자로 넘어오는 items가 null 인지 확인해보세요..