2013-07-18 4 views
0

각 항목에 TextItem과 ListView (동적 길이)가 들어있는 ListView를 만들려고하지만 어떤 이유로 인해 ListView에 항목이 하나만 표시됩니다. 불가능한 것이거나 잘못된 것을하고 있습니까?목록보기 항목이있는 Android 목록보기

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 
<ListView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/outerListId" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" /> 
</LinearLayout> 

내부 목록 항목 :

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Profile Name" 
     android:id="@+id/nameId"/> 
    <ListView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/innerListId"/> 
</RelativeLayout> 

코드 :

public class ListAllActivity extends Activity { 

    protected class MyListItem { 
     public String name; 
     public List<String> items; 

     public MyListItem(String name) { 
      this.name = name; 
      this.items = items(); 
     } 

     public List<String> items() { 
      ArrayList<String> strings = new ArrayList<String>(); 
      strings.add("item1"); 
      strings.add("item2"); 
      return strings; 
     } 
    } 

    public class CustomListViewAdapter extends ArrayAdapter<MyListItem> { 
     Context context; 

     public CustomListViewAdapter(Context context, int resourceId, List<MyListItem> items) { 
      super(context, resourceId, items); 
      this.context = context; 
     } 

     private class ViewHolder { 
      TextView nameText; 
      ListView myList; 
     } 

     public View getView(int position, View convertView, ViewGroup parent) { 
      ViewHolder holder = null; 
      MyListItem rowItem = getItem(position); 

      LayoutInflater mInflater = (LayoutInflater) context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE); 
      if (convertView == null) { 
       convertView = mInflater.inflate(R.layout.profile_exercises_list_item, null); 
       holder = new ViewHolder(); 
       convertView.setTag(holder); 
      } else { 
       holder = (ViewHolder) convertView.getTag(); 
      } 
      holder.nameText = (TextView) convertView.findViewById(R.id.profileNameListItemId); 
      holder.myList = (ListView) convertView.findViewById(R.id.innerListId); 
      List<String> items = rowItem.items(); 
      holder.nameText.setText(rowItem.name); 
      ArrayAdapter<String> myarrayAdapter = new ArrayAdapter<String>(convertView.getContext(), android.R.layout.simple_list_item_1, items); 
      holder.myList.setAdapter(myarrayAdapter); 
      holder.myList.setTextFilterEnabled(true); 

      return convertView; 
     } 
    } 

    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.mylayout); 

     ListView listView = (ListView) findViewById(R.id.outerListId); 

     ArrayList<MyListItem> allItems = new ArrayList<MyListItem>(); 
     allItems.add(new MyListItem("name1")); 
     allItems.add(new MyListItem("name2")); 

     CustomListViewAdapter all = new CustomListViewAdapter(this, android.R.layout.simple_list_item_1, allItems); 
     listView.setAdapter(all); 
     listView.setTextFilterEnabled(true); 
    } 
} 

답변

1

가 대신 중첩의 ListView를 사용하면 확장 목록보기 사용할 수 있습니다

여기 내 레이아웃입니다. 다음은 확장 가능한 ListView로 재생할 때 유용한 링크입니다. http://www.dreamincode.net/forums/topic/270612-how-to-get-started-with-expandablelistview/
http://android-adda.blogspot.com/2011/06/custom-expandable-listview.html

+1


내가 성공적으로 지금 Exandable의 ListView를 사용하고, 감사합니다. – UncleBlue

+0

@UncleBlue My Pleasure =) –