2015-03-02 6 views
0

Я хочу отобразить дочерние элементы его соответствующего элемента группы, доступные в расширяемом списке, в отдельный список.Как отображать дочерние элементы соответствующего объекта группы в другом списке

я сделал следующее,

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); 
} 
} 

Теперь здесь, в приведенной выше коде на дочерних элементах становятся изображенным ниже элемент группы в одном ListView вместо я хочу, чтобы отобразить дочерние элементы в разных ListView рядом с группой item listview.

Пожалуйста, помогите мне с этим, застрявшим долгое время.

Любая помощь в этом отношении будет оценена по достоинству.

+0

использование ребенка ArrayList для другого ListView –

+0

могли бы вы помочь мне с логикой или конкретном примере. –

+0

что вы хотите точно? когда вы нажимаете на элемент gruop, затем открываете новую активность и видите ли список? –

ответ

1

использовать этот код

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) { 
    } 
}; 
} 

технич 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

здесь проблема заключается в том, что каждый раз, когда я нажимаю на элемент группы, дочерние элементы повторяются несколько раз, это не должно происходить, вместо этого он должен скрывать дочерние элементы, когда я нажимаю элемент группы второй раз. –

+0

@Jigarpatel .. вы управляете кодом в соответствии с вашими потребностями ... расширяйте условие 'if' для всех элементов группы и очищайте список в каждом клике. –

+0

@Jigarpatel .. используйте отредактированный код. –

0

Вместо использования ExpandableListView используйте обычный ListView и фрагменты.

Показать родительский список в фрагменте 1 и щелкнуть элемент в родительском 1 покажет фрагмент 2, в котором есть дочерние элементы в списке.

+0

может у вас, пожалуйста, напишите какой-то код относительно того же самого, sry, чтобы беспокоить u, но я немного новичок в этом. –

Смежные вопросы