如何在其他列表视图中显示其各个组项目的子项目

问题描述:

我想将可扩展列表视图中各个组项目的子项目显示为单独的列表视图。如何在其他列表视图中显示其各个组项目的子项目

我也做了以下

package com.example.demo_data1; 

import java.util.ArrayList; 

import android.annotation.SuppressLint; 
import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.support.v4.app.ActionBarDrawerToggle; 
import android.support.v4.widget.DrawerLayout; 
import android.support.v4.widget.DrawerLayout.DrawerListener; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.widget.ExpandableListView; 
import android.widget.ExpandableListView.OnChildClickListener; 
import android.widget.Toast; 

@SuppressLint("NewApi") 
public class DrawerLayoutTest extends Activity implements OnChildClickListener { 

private DrawerLayout drawer; 
private ExpandableListView drawerList; 
private ActionBarDrawerToggle actionBarDrawerToggle; 

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

    setGroupData(); 
    setChildGroupData(); 

    initDrawer(); 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.drawer_layout_test, menu); 
    return true; 
} 

private void initDrawer() { 
    drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 

    drawerList = (ExpandableListView) findViewById(R.id.left_drawer); 

    drawerList.setAdapter(new NewAdapter(this, groupItem, childItem)); 

    drawerList.setOnChildClickListener(this); 

    // actionBarDrawerToggle = new ActionBarDrawerToggle(this, drawer, 
    // R.drawable.ic_drawer, R.string.open_drawer, 
    // R.string.close_drawer) { 
    // public void onDrawerClosed(View view) { 
    // getActionBar().setSubtitle("open"); 
    // } 
    // 
    // /** Called when a drawer has settled in a completely open state. */ 
    // public void onDrawerOpened(View drawerView) { 
    // getActionBar().setSubtitle("close"); 
    // } 
    // 
    // }; 
    // 
    // drawer.setDrawerListener(actionBarDrawerToggle); 

} 

public void setGroupData() { 
    groupItem.add("TECHNOLOGY"); 
    groupItem.add("MOBILE"); 
    groupItem.add("MANUFACTURER"); 
    groupItem.add("EXTRAS"); 
} 

ArrayList<String> groupItem = new ArrayList<String>(); 
ArrayList<Object> childItem = new ArrayList<Object>(); 

public void setChildGroupData() { 
    /** 
    * Add Data For TecthNology 
    */ 
    ArrayList<String> child = new ArrayList<String>(); 
    child.add("Java"); 
    child.add("Drupal"); 
    child.add(".Net Framework"); 
    child.add("PHP"); 
    childItem.add(child); 

    /** 
    * Add Data For Mobile 
    */ 
    child = new ArrayList<String>(); 
    child.add("Android"); 
    child.add("Window Mobile"); 
    child.add("iPHone"); 
    child.add("Blackberry"); 
    childItem.add(child); 
    /** 
    * Add Data For Manufacture 
    */ 
    child = new ArrayList<String>(); 
    child.add("HTC"); 
    child.add("Apple"); 
    child.add("Samsung"); 
    child.add("Nokia"); 
    childItem.add(child); 
    /** 
    * Add Data For Extras 
    */ 
    child = new ArrayList<String>(); 
    child.add("Contact Us"); 
    child.add("About Us"); 
    child.add("Location"); 
    child.add("Root Cause"); 
    childItem.add(child); 
} 


public boolean onChildClick(ExpandableListView parent, View v, 
     int groupPosition, int childPosition, long id) { 
    switch (groupPosition) 
    { 
    case 0: 
      switch (childPosition) 
      { 
      case 0: 
       MainActivity(); 
       break; 
      case 1: 
       // 
      } 

    } 
    return false; 
} 

private void MainActivity(){ 
Intent myIntent = new Intent(this, MainActivity.class); 
startActivity(myIntent); 
} 
} 

现在,这里在上面的代码中的子项越来越显示在同一个列表视图组项目下,而不是我想旁边显示组在不同的列表视图中的子项项目列表视图。

请帮我一下,坚持了很久。

任何有关这方面的帮助将不胜感激。

+0

另一个列表视图 – 2015-03-02 06:18:00

+0

使用童工的ArrayList能不能帮我用逻辑或某些例子。 – 2015-03-02 06:18:51

+0

你想要什么?当你点击你的gruop项目,然后打开新的活动,并有一个列表视图? – 2015-03-02 06:21:24

使用这个代码

activity_main.xml中

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:baselineAligned="false" 
android:orientation="vertical" 
tools:context="com.example.listtest.MainActivity" > 




<android.support.v4.widget.DrawerLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/drawer_layout" 
    android:layout_width="match_parent" 
    android:layout_height="0dp" 
    android:layout_weight="1" > 

    <!-- Drawer Content --> 

    <FrameLayout 
     android:id="@+id/content_frame" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 


    </FrameLayout> 

    <!-- The navigation menu --> 

    <ListView 
     android:id="@+id/left_drawer_child" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:choiceMode="singleChoice" 
       android:layout_gravity="start" 
     android:divider="@android:color/transparent" 
     android:dividerHeight="0dp" 
     android:background="@android:color/white" /> 
</android.support.v4.widget.DrawerLayout> 

MainActivity.java

public class MainActivity extends FragmentActivity { 
private DrawerLayout mDrawerLayout; 
Fragment fragment = null; 
ListView mainlist; 
ArrayList<String> formain = new ArrayList<String>(); 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    mainlist = (ListView) findViewById(R.id.left_drawer_child); 
    mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); 
    mDrawerLayout.setScrimColor(getResources().getColor(android.R.color.transparent)); 
    mDrawerLayout.setDrawerListener(mDrawerListener); 
// childlist = (ListView) findViewById(R.id.listView2); 
    formain.add("TECHNOLOGY"); 
    formain.add("MOBILE"); 
    formain.add("MANUFACTURER"); 
    formain.add("EXTRAS"); 
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,formain); 
    mainlist.setAdapter(adapter); 
    mDrawerLayout.openDrawer(mainlist); 
    mainlist.setOnItemClickListener(new OnItemClickListener() { 

     @Override 
     public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { 
      // TODO Auto-generated method stub 
      String getGroup = formain.get(arg2); 
      if (getGroup == "TECHNOLOGY"){ 
       fragment = new TechnologyFragment(); 
        getSupportFragmentManager().beginTransaction().replace(R.id.content_frame, fragment).commit(); 
       mDrawerLayout.closeDrawer(mainlist); 
      } 
      if (getGroup == "MOBILE"){ 
      //fragment for mobile 
      } 
      if (getGroup == "MANUFACTURER"){ 
       //fragment for manufacturer 
      } 
      if (getGroup == "EXTRAS"){ 
      //fragment for extras 
      } 


     } 
    }); 

} 
private DrawerListener mDrawerListener = new DrawerListener() { 

    @Override 
    public void onDrawerStateChanged(int status) { 

    } 

    @Override 
    public void onDrawerSlide(View view, float slideArg) { 

    } 

    @Override 
    public void onDrawerOpened(View view) { 
    } 

    @Override 
    public void onDrawerClosed(View view) { 
    } 
}; 
} 

TECHN ology_fragment.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" > 

<ListView 
    android:id="@+id/listView1" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" > 
</ListView> 

</LinearLayout> 

TechnologyFragment.java

public class TechnologyFragment extends Fragment { 

ListView techlist; 
ArrayList<String> forchild = new ArrayList<String>(); 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    View rootView = inflater.inflate(R.layout.technology_fragment, null); 
    techlist = (ListView) rootView.findViewById(R.id.listView1); 
    forchild.add("Java"); 
    forchild.add("Drupal"); 
    forchild.add(".Net Framework"); 
     forchild.add("PHP"); 
     ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1,forchild); 
     techlist.setAdapter(adapter); 

    return rootView; 
} 

} 
+0

这里的问题是,每次我点击组项时,子项重复多次不应该发生,而应该隐藏子项,当我第二次点击组项时。 – 2015-03-02 06:56:42

+0

@Jigarpatel ..你已经根据你的需要管理代码...展开所有组项目的“if”条件并且每次点击清除列表视图。 – 2015-03-02 06:59:03

+0

@Jigarpatel ..使用编辑好的代码。 – 2015-03-02 07:04:05

而不是使用ExpandableListView使用普通ListView和片段。

显示片段1中的父列表并单击父项1中的项目将显示在列表中具有子项的片段2。

+0

可以请你张贴一些关于相同的代码,sry打扰你,但我在这方面有点新。 – 2015-03-02 06:40:08