开发者

Expandable List in Android

开发者 https://www.devze.com 2023-03-02 01:00 出处:网络
I want to implemented a expandable ImageListView . _exlist=getExpandableListView(); final String NAME = \"name\";

I want to implemented a expandable ImageListView .

_exlist=getExpandableListView();

    final String NAME = "name";
    final String IMAGE = "image";
    final LayoutInflater layoutInflater = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    final ArrayList<HashMap<String, String>> headerData = new ArrayList<HashMap<String, String>>();

    final HashMap<String, String> group1 = new HashMap<String, String>();
    group1.put(NAME, "Group 1");

    headerData.add( group1 );

    final HashMap<String, String> group2 = new HashMap<String, String>();
    group2.put(NAME, "Group 2");开发者_JAVA百科
    headerData.add( group2);


    final ArrayList<ArrayList<HashMap<String, Object>>> childData = new ArrayList<ArrayList<HashMap<String, Object>>>();

    final ArrayList<HashMap<String, Object>> group1data = new ArrayList<HashMap<String, Object>>();
    childData.add(group1data);

    final ArrayList<HashMap<String, Object>> group2data = new ArrayList<HashMap<String, Object>>();
    childData.add(group2data);


    // Set up some sample data in both groups
    for( int i=0; i<10; ++i) {
        final HashMap<String, Object> map = new HashMap<String,Object>();
        map.put(NAME, "Child " + i );
        map.put(IMAGE, getResources().getDrawable(R.drawable.icon));
        ( i%2==0 ? group1data : group2data ).add(map);
    }

    setListAdapter( new SimpleExpandableListAdapter(
            this,
            headerData,
            android.R.layout.simple_expandable_list_item_1,
            new String[] { NAME },            // the name of the field data
            new int[] { android.R.id.text1 }, // the text field to populate with the field data
            childData,
            0,
            null,
            new int[] {}
        ) {
            @Override
            public ViewGroup getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
                final ViewGroup v = (ViewGroup) super.getChildView(groupPosition, childPosition, isLastChild, convertView, parent);

                // Populate your custom view here
                ((TextView)v.findViewById(R.id.name)).setText( (String) ((Map<String,Object>)getChild(groupPosition, childPosition)).get(NAME) );
                ((ImageView)v.findViewById(R.id.image)).setImageDrawable( (Drawable) ((Map<String,Object>)getChild(groupPosition, childPosition)).get(IMAGE) );

                return v;
            }

            @Override
            public ViewGroup newChildView(boolean isLastChild, ViewGroup parent) {
                 return (ViewGroup) layoutInflater.inflate(R.layout.list, null, false);
            }
        }
    );

Then My question is how i add images and text in parents list.


You can override the

public View getGroupView(int groupPosition, boolean isExpanded, 
    View convertView, ViewGroup parentView)

method of the SimpleExpandableListAdapter as well, and also (if necessary) the newGroupView method, and manipulate your group view as you did the child view.

The example here uses BaseExpandableListAdapter extension to populate the expandable list view, but the methods mentioned are common for both.

0

精彩评论

暂无评论...
验证码 换一张
取 消