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

ExpandableListView(확장리스트뷰)안에 TextView와 RadioButton이 들어간 프로젝트 질문 드립니다ㅠ.ㅠ...! 부탁드려요!

0 추천

ExpandableListAdapter.java

// 어댑터 부분 코드입니다.
public class ExpandableListAdapter extends BaseExpandableListAdapter {
 
 public Context mContext;
 public ExpandableListView mListView;
 public List mModel;
 
 public Context mContext2;
 public ExpandableListView mListView2;
 public List mModel2;
 
 public ExpandableListAdapter(Context pContext, ExpandableListView pListView, List pModel)
 {
  this.mContext = pContext;
  this.mListView = pListView;
  this.mModel = pModel;

 }
 
 public void ExpandableListAdapter2(Context pContext2, ExpandableListView pListView2, List pModel2)
 {
  this.mContext = pContext2;
  this.mListView = pListView2;
  this.mModel = pModel2;

 }
 
 public void addItem(DatailsModel item, SampleModel groupData)
 {
  if(!mModel.contains(groupData)){
   mModel.add(groupData);
  }

 int ind = mModel.indexOf(groupData);
 List lstItems =  ((SampleModel) mModel.get(ind)).getItems();
 lstItems.add(item);
 ((SampleModel) mModel.get(ind)).setItems(lstItems);
 }
 
 
 public void addItem2(DatailsModel2 item2, SampleModel groupData2)
 {
  if(!mModel2.contains(groupData2)){
   mModel2.add(groupData2);
  }
//get에 2 붙이면 오륭
 int ind2 = mModel2.indexOf(groupData2);
 List lstItems2 =  ((SampleModel) mModel2.get(ind2)).getItems2();
 lstItems2.add(item2);
 ((SampleModel) mModel2.get(ind2)).setItems2(lstItems2);
 }
 
 
 
 
 
 
 @Override
 public Object getChild(int groupPosition, int childPosition){
  List item = ((SampleModel) mModel.get(groupPosition)).getItems();
  return item.get(childPosition);
 }
 
 public Object getChild2(int groupPosition2, int childPosition2){
  List item2 = ((SampleModel) mModel2.get(groupPosition2)).getItems2();
  return item2.get(childPosition2);
 }
 
 
 
 
 
 @Override
 public long getChildId(int groupPosition, int childPosition){
  return childPosition;
 }
 
 public long getChildId2(int groupPosition2, int childPosition2){
  return childPosition2;
 }
 
 
 
 
 @Override
 public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View view, ViewGroup parent) {
  DatailsModel item = (DatailsModel)getChild(groupPosition, childPosition);
  
  if(view == null){
   LayoutInflater inflater = (LayoutInflater)mContext.getSystemService(mContext.LAYOUT_INFLATER_SERVICE);
   view = inflater.inflate(R.layout.list_item, null);
   }
  
  TextView txtCountry = (TextView)view.findViewById(R.id.txtCountry);
  txtCountry.setText(item.getSubData());
  return view;
  }
 
 @SuppressLint("ParserError")
 public View getChildView2(int groupPosition2, int childPosition2, boolean isLastChild2, View view2, ViewGroup parent2) {
  DatailsModel2 item2 = (DatailsModel2)getChild2(groupPosition2, childPosition2);
  
  if(view2 == null){
   LayoutInflater inflater2 = (LayoutInflater)mContext2.getSystemService(mContext.LAYOUT_INFLATER_SERVICE);
   view2 = inflater2.inflate(R.layout.list_item3, null);
   }
  //settext2 라고하면 오류
  RadioButton txtCountry2 = (RadioButton)view2.findViewById(R.id.txtCountry2);
  txtCountry2.setText(item2.getSubData2());
  return view2;
  }
 
 

// getChildrenCount () 에서 return 값이 0 이 나옵니다ㅠ.ㅠ
 
 
 @Override
 public int getChildrenCount(int groupPosition){
  return ((SampleModel) mModel.get(groupPosition)).getItems().size();
 }
 
 public int getChildrenCount2(int groupPosition2){
  return ((SampleModel) mModel2.get(groupPosition2)).getItems2().size();
 }
 
 
 
 @Override
 public Object getGroup(int groupPosition){
  return mModel.get(groupPosition);
 }
 
 public Object getGroup2(int groupPosition2){
  return mModel2.get(groupPosition2);
 }
 
 
 
 @Override
 public int getGroupCount(){
  return mModel.size();
 }
 
 public int getGroupCount2(){
  return mModel2.size();
 }
 
 
 
 @Override
 public long getGroupId(int groupPosition){
  return groupPosition;
 }
 
 public long getGroupId2(int groupPosition2){
  return groupPosition2;
 }
 
 
 
 
 @Override
 public View getGroupView(int groupPosition, boolean isLastChild, View view, ViewGroup parent){
  SampleModel model = (SampleModel)getGroup(groupPosition);
  if(view==null){
   LayoutInflater inflater = (LayoutInflater)mContext.getSystemService(mContext.LAYOUT_INFLATER_SERVICE);
   view = inflater.inflate(R.layout.group_item, null);
  }
  
  TextView txtContinent = (TextView)view.findViewById(R.id.txtContinent);
  txtContinent.setText(model.getData());
  return view;
 }
 
 
 public View getGroupView2(int groupPosition2, boolean isLastChild2, View view2, ViewGroup parent2){
  SampleModel model2 = (SampleModel)getGroup2(groupPosition2);
  if(view2==null){
   LayoutInflater inflater2 = (LayoutInflater)mContext2.getSystemService(mContext.LAYOUT_INFLATER_SERVICE);
   view2 = inflater2.inflate(R.layout.group_item, null);
  }
  //setTExt2 오류
  TextView txtContinent = (TextView)view2.findViewById(R.id.txtContinent);
  txtContinent.setText(model2.getData());
  return view2;
 }
 
 @Override
 public boolean hasStableIds(){
  return true;
 }
 
 public boolean hasStableIds2(){
  return true;
 }
 
 @Override
 public boolean isChildSelectable(int arg0, int arg1) {
  return true;
 }
 
 public boolean isChildSelectable2(int arg02, int arg12) {
  return true;
 }

 
 
}

 

 

간단한 프로젝트인데 오류가 나서 못하고 있습니다.

TextView와 RadioButton이 들어간 프로젝트인데요....

위쪽의 ExpandableListView는 누르면 하위 목록들이 슉 나오는데

밑쪽의 것은 누르면 어플이 중지되었습니다 라면서 꺼집니다ㅠ.ㅠ... 도와주세요!

아무래도 어댑터 쪽의 코드오류인것같습니다ㅠㅠ

 

 

이렇게 위에 것은 되는데 밑이 안됩니다.

성이밍 (120 포인트) 님이 2013년 7월 25일 질문
에러 로그캣 내용을 보여주시면 빠른 해결이 될겁니다.
07-25 15:31:29.124: I/Adreno200-EGLSUB(3155): <ConfigWindowMatch:2078>: Format RGBA_8888.
07-25 15:31:29.134: D/memalloc(3155): ion: Mapped buffer base:0x528e6000 size:3768320 offset:0 fd:55
07-25 15:31:29.134: E/(3155): Can't open file for reading
07-25 15:31:29.134: E/(3155): Can't open file for reading
07-25 15:31:29.254: D/memalloc(3155): ion: Mapped buffer base:0x53256000 size:3768320 offset:0 fd:60
07-25 15:31:29.264: D/CLIPBOARD(3155): Hide Clipboard dialog at Starting input: finished by someone else... !
07-25 15:31:30.245: D/memalloc(3155): ion: Mapped buffer base:0x536ee000 size:3768320 offset:0 fd:63
07-25 15:31:52.377: W/dalvikvm(3155): threadid=1: thread exiting with uncaught exception (group=0x40c131f8)
07-25 15:31:52.377: E/AndroidRuntime(3155): FATAL EXCEPTION: main
07-25 15:31:52.377: E/AndroidRuntime(3155): java.lang.NullPointerException
07-25 15:31:52.377: E/AndroidRuntime(3155):     at com.example.expandable_test.ExpandableListAdapter.getChildrenCount(ExpandableListAdapter.java:138)
07-25 15:31:52.377: E/AndroidRuntime(3155):     at android.widget.ExpandableListConnector.refreshExpGroupMetadataList(ExpandableListConnector.java:561)
07-25 15:31:52.377: E/AndroidRuntime(3155):     at android.widget.ExpandableListConnector.expandGroup(ExpandableListConnector.java:682)
07-25 15:31:52.377: E/AndroidRuntime(3155):     at android.widget.ExpandableListView.handleItemClick(ExpandableListView.java:563)
07-25 15:31:52.377: E/AndroidRuntime(3155):     at android.widget.ExpandableListView.performItemClick(ExpandableListView.java:521)
07-25 15:31:52.377: E/AndroidRuntime(3155):     at android.widget.AbsListView$PerformClick.run(AbsListView.java:2736)
07-25 15:31:52.377: E/AndroidRuntime(3155):     at android.widget.AbsListView$1.run(AbsListView.java:3491)
07-25 15:31:52.377: E/AndroidRuntime(3155):     at android.os.Handler.handleCallback(Handler.java:605)
07-25 15:31:52.377: E/AndroidRuntime(3155):     at android.os.Handler.dispatchMessage(Handler.java:92)
07-25 15:31:52.377: E/AndroidRuntime(3155):     at android.os.Looper.loop(Looper.java:137)
07-25 15:31:52.377: E/AndroidRuntime(3155):     at android.app.ActivityThread.main(ActivityThread.java:4512)
07-25 15:31:52.377: E/AndroidRuntime(3155):     at java.lang.reflect.Method.invokeNative(Native Method)
07-25 15:31:52.377: E/AndroidRuntime(3155):     at java.lang.reflect.Method.invoke(Method.java:511)
07-25 15:31:52.377: E/AndroidRuntime(3155):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:794)
07-25 15:31:52.377: E/AndroidRuntime(3155):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:561)
07-25 15:31:52.377: E/AndroidRuntime(3155):     at dalvik.system.NativeStart.main(Native Method)


로그캣이요!ㅠㅠㅠㅠ

1개의 답변

0 추천
public void ExpandableListAdapter2(Context pContext2, ExpandableListView pListView2, List pModel2)
{
 this.mContext = pContext2;
 this.mListView = pListView2;
 this.mModel = pModel2;
 
}
 
가 아니라
 
public void ExpandableListAdapter2(Context pContext2, ExpandableListView pListView2, List pModel2)
{
 this.mContext2 = pContext2;
 this.mListView2 = pListView2;
 this.mModel2 = pModel2;
 
}
 
아닐까요?

 

그후최초 (2,980 포인트) 님이 2013년 7월 25일 답변
그래도 또 똑같은 오류가 나네여... 메인 문제일까요?ㅠㅠㅠㅠ
제가 이 기능을 사용해보지 않았지만 소스 구조에 문제가 있는것으로 보입니다.

사용방법이 완전히 잘못되신것 같아요

로그를 찍어서 확인해보셔야 하겠지만 override된 메소드만 호출되고 뒤에 2라고 붙인 메소드들은 시스템에서 호출이 되지 않을겁니다.

밑에 리스트를 누르면 getChildrenCount2()가 호출이 되야하는데 호출되지 않고 getChildrenCount()에서 오류가 나는 것을 보면 알 수 있습니다.
...