7

ich dieses Beispiel Tutorial gefolgt und entwickelte eine Beispielanwendung http://www.androidhive.info/2013/07/android-expandable-list-view-tutorial/Android Liste Anzeigen mit expandableListView

enter image description here

Wenn ich auf Kern klicken i eine weitere Liste in demselben Bildschirm unter Kern laden möchten, Wie kann ich das tun? Mit meinem untenstehenden Code kann ich die Kinderliste in einem anderen Bildschirm laden, Hilfe?

My-Code für ChildClickListener geht hier:

 @Override 
     public boolean onChildClick(ExpandableListView parent, View v, 
       int groupPosition, int childPosition, long id) { 
      // TODO Auto-generated method stub 

      Log.d("onChildClick", "onChildClick"); 

      String position = (String) parentItems.get(groupPosition); 
      Log.d("position", position); 

      String child = listDataChild.get(position).get(childPosition); 

      Log.d("child", child); 

      if (child.equalsIgnoreCase("Core")) { 

       ArrayList<String> parentItems = new ArrayList<String>(); 

       HashMap<String, List<String>> listDataChild = new HashMap<String, List<String>>(); 
       ArrayList<String> childItems = new ArrayList<String>(); 
       childItems.add("corejava"); 
       childItems.add("corejava"); 
       childItems.add("corejava"); 
       childItems.add("corejava"); 

       parentItems.add(position); 
       listDataChild.put(parentItems.get(0), childItems); 
       expandableList = (ExpandableListView) findViewById(R.id.lvExp); 

       CoreAdapter adapter = new CoreAdapter(parentItems, 
         listDataChild); 
       CustExpListview SecondLevelexplv = new CustExpListview(
         MainActivity.this); 
       adapter.setInflater(
         (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE), 
         MainActivity.this); 

       SecondLevelexplv.setAdapter(adapter); 
       SecondLevelexplv.setGroupIndicator(null); 

       expandableList.setAdapter(adapter); 

      } 

Antwort

1

Sie haben ein Layout in der XML-Datei erstellen (von wo Ihr Kerntextview kommt) und zeigt eine Bildansicht unter onClick dieser Imageview werden Sie nur Ihr Layout machen müssen gegangen und Visible ich habe Sie gerade Richtung gegeben Rest verlässt sich auf Ihre Fähigkeiten :)

<RelativeLayout 
     android:id="@+id/option" 
     android:layout_width="fill_parent" 
     android:layout_height="40dp" 
     android:gravity="center" 
     android:orientation="horizontal" > 

    </RelativeLayout> 

    <RelativeLayout 
     android:id="@+id/linear" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_margin="10dp" 
     android:orientation="horizontal" > 

     <ImageView 
      android:id="@+id/navigationIcon" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignParentRight="true" 
      android:layout_alignParentTop="true" 
      android:src="@drawable/nn" /> 


     <ImageView 
      android:id="@+id/callOption" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:src="@drawable/phonee" /> 

     <ImageView 
      android:id="@+id/imageViewfeedback" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignParentTop="true" 
      android:layout_centerHorizontal="true" 
      android:src="@drawable/editer" /> 
    </RelativeLayout> 

In Jave Datei

linear.setVisibility(View.GONE); 
     option.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       try { 
        if(count==0) 
        { 
         linear.setVisibility(View.VISIBLE); 

         count=1; 
        } 
        else 
        { 


         linear.setVisibility(View.GONE); 
         count=0; 
        } 

      } 
     }); 
1

Sie müssen zu Three-Level of Expandable ListView wechseln, die das Unterkind in Kind enthält.

Überprüfen Sie auch ExpandableListView with 3 Childs

+0

Aber wenn wir nur auf Kinder Artikel klicken, wird die große Kind Daten im Zusammenhang mit Kind, aber nicht in der Anfangsphase das heißt MainActivity Last – String

+0

Was wollen Sie eigentlich bekommen? – GrIsHu

+0

Wenn ich auf Kern oder Spiel klicke Etwas, das ich die Liste in Bezug auf diese 2 untergeordneten Elemente laden möchte – String

2

ich schreibe ein TreeView-Adapter für Sie, Sie diese und viele Ebene setzen können, wie Sie möchten, für die Sie benötigen, kopieren Sie einfach folgenden Code:

MainActivity:

public class MainActivity extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     // add data for test on one list<AccountHierarchical> 


     AccountHierarchical obj = new AccountHierarchical(); 
     obj.setLevelId(1); 
     obj.setTitle("level 1"); 


     AccountHierarchical obj2 = new AccountHierarchical(); 
     obj2.setLevelId(1); 
     obj2.setTitle("level 2"); 


     AccountHierarchical obj3 = new AccountHierarchical(); 
     obj3.setLevelId(1); 
     obj3.setTitle("level 3"); 


     List<AccountHierarchical> emptyList = new ArrayList<AccountHierarchical>(); 
     obj3.setList(emptyList); 

     List<AccountHierarchical> list2 = new ArrayList<AccountHierarchical>(); 
     list2.add(obj3);list2.add(obj3);list2.add(obj3);list2.add(obj3);list2.add(obj3); 
     obj2.setList(list2); 

     List<AccountHierarchical> list = new ArrayList<AccountHierarchical>(); 
     list.add(obj2);list.add(obj2);list.add(obj2);list.add(obj2);list.add(obj2); 
     obj.setList(list); 


     List<AccountHierarchical> result = new ArrayList<AccountHierarchical>(); 
     result.add(obj);result.add(obj);result.add(obj);result.add(obj); 



     // create Adapter 
     TreeView adapter = new TreeView(result, this, 
       getLayoutInflater() , false, 0); 

     ExpandableListView expandList = (ExpandableListView)findViewById(R.id.expandableList_tree); 
     expandList.setGroupIndicator(null); 
     expandList.setAdapter(adapter); 
    } 

CustExpListview:

public class CustExpListview extends ExpandableListView { 

    int intGroupPosition, intChildPosition, intGroupid; 

    public CustExpListview(Context context) { 
      super(context); 
    } 
    @Override 
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { 
//   widthMeasureSpec = MeasureSpec.makeMeasureSpec(400, 
//      MeasureSpec.AT_MOST); 
      heightMeasureSpec = MeasureSpec.makeMeasureSpec(600, 
         MeasureSpec.AT_MOST); 
      super.onMeasure(widthMeasureSpec, heightMeasureSpec); 
    } 


} 

AccountHierarchical:

public class AccountHierarchical { 

    List<AccountHierarchical> list; 
    private String Title; 
    private int Id; 


    public int getId() { 
     return Id; 
    } 

    public void setLevelId(int Id) { 
     this.Id = Id; 
    } 

    public String getTitle() { 
     return Title; 
    } 

    public void setTitle(String title) { 
     Title = title; 
    } 

    public List<AccountHierarchical> getList() { 
     return list; 
    } 

    public void setList(List<AccountHierarchical> list) { 
     this.list = list; 
    } 

} 

TreeView:

public class TreeView extends BaseExpandableListAdapter implements 
     OnClickListener { 

    List<AccountHierarchical> list; 
    LayoutInflater inflatter; 
    static Context context; 
    boolean checkGroup; 
    int position; 

    static ProgressDialog ProgressDialog; 

    public TreeView(List<AccountHierarchical> list, Context context, 
      LayoutInflater inflatter, boolean checkGroup, int position 
     ) { 
     this.list = list; 
     TreeView.context = context; 
     this.inflatter = inflatter; 
     this.checkGroup = checkGroup; // this is true when you call from inner. 
     this.position = position; 



    } 

    @Override 
    public Object getChild(int groupPosition, int childPosition) { 

     return list.get(groupPosition).getList().get(childPosition); 
    } 

    @Override 
    public long getChildId(int groupPosition, int childPosition) { 

     return list.get(groupPosition).getList().get(childPosition).getId(); 
    } 

    @Override 
    public View getChildView(int groupPosition, int childPosition, 
      boolean isLastChild, View convertView, ViewGroup parent) { 

     if (checkGroup) 
      groupPosition = position; 




     List<AccountHierarchical> childtemp = list.get(groupPosition) 
       .getList(); 

     // call this adapter again for creating another level 
     if (childtemp.get(childPosition).getList().size() > 0) { 
      CustExpListview SecondLevelexplv = new CustExpListview(context); 
      TreeView adapter = null; 

      adapter = new TreeView(childtemp, context, 
         inflatter, true, childPosition); 
      SecondLevelexplv.setGroupIndicator(null); 
      SecondLevelexplv.setAdapter(adapter); 
      return SecondLevelexplv; 
     } 
     // call one layout, this is last child 
     else { 

      convertView = inflatter.inflate(R.layout.grouprow, null); 
      TextView tv = (TextView) convertView.findViewById(R.id.grouprow); 



      tv.setText(list.get(groupPosition).getList().get(childPosition) 
        .getTitle()); 
      tv.setPadding(0, 0, 20, 0); 
      convertView.setTag(list.get(groupPosition).getList() 
        .get(childPosition)); 
      convertView.setId(position); 
      convertView.setOnClickListener(this); 
      return convertView; 
     } 

    } 

    @Override 
    public int getChildrenCount(int groupPosition) { 
     return list.get(groupPosition).getList().size(); 
    } 

    @Override 
    public Object getGroup(int groupPosition) { 
     return list.get(groupPosition); 
    } 

    @Override 
    public int getGroupCount() { 

     if (checkGroup) 
      return 1; 

     return list.size(); 
    } 

    @Override 
    public long getGroupId(int groupPosition) { 
     return list.get(groupPosition).getId(); 
    } 

    @Override 
    public View getGroupView(int groupPosition, boolean isExpanded, 
      View convertView, ViewGroup parent) { 

     if (convertView == null) 
      convertView = inflatter.inflate(R.layout.grouprow, null); 

     TextView tv = (TextView) convertView.findViewById(R.id.grouprow); 

     if (checkGroup) 
      tv.setText(list.get(position).getTitle()); 
     else 
      tv.setText(list.get(groupPosition).getTitle()); 

     return convertView; 
    } 

    @Override 
    public boolean hasStableIds() { 
     return false; 
    } 

    @Override 
    public boolean isChildSelectable(int groupPosition, int childPosition) { 

     return false; 
    } 

    @Override 
    public void onClick(View v) { 
     // your onClick method 
    } 

} 

activity_main.xml:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/RelativeLayout1" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    > 

    <ExpandableListView 
     android:id="@+id/expandableList_tree" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentTop="true" > 

    </ExpandableListView> 

</RelativeLayout> 

grouprow.xml:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/RelativeLayout1" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical"> 

    <TextView 
     android:id="@+id/grouprow" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentTop="true" 
     android:layout_marginBottom="20dp" 
     android:layout_marginRight="20dp" 
     android:layout_marginTop="20dp" 
     android:text=""/> 



</RelativeLayout> 

Schnapp:

enter image description here

+0

Danke, dein Code hilft dir sehr dabei, eine schwierige Aufgabe durchzulesen. –