Android:可扩展列表视图实现

眼睛

我试图实现一个可扩展的列表视图适配器。

我有即时通讯代表的数据

private Map<Group, List<Contact>> groupedContactList = new HashMap<Group, List<Contact>>();

getGroup很好地覆盖了该方法,并且它可以工作,但是我无法覆盖该getChild方法,因为该子项是一个列表,并且不确定是否应返回整个列表或仅返回列表中的一个成员。

编辑:全班

public class MyGroupsAdapter extends BaseExpandableListAdapter {

    private LayoutInflater mInflater;
    private Context context;

    private Map<Group, List<Contact>> groupedContactList = new HashMap<Group, List<Contact>>();

    public MyGroupsAdapter(HashMap<Group, List<Contact>> groupedContactList,
            Context context) {
        this.groupedContactList = groupedContactList;
        this.context = context;
        mInflater = LayoutInflater.from(context);
    }

    @Override
    public Contact getChild(int groupPosition, int childPosition) {
        return getGroup(groupPosition+1).getContactsInGroup().get(childPosition+1);
    }

    @Override
    public long getChildId(int arg0, int arg1) {
        return arg0;
    }

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

        final String contactRow = (String) getChild(groupPosition,
                childPosition).getFullName();

        mInflater = LayoutInflater.from(context);

        if (convertView == null) {
            convertView = mInflater.inflate(
                    R.layout.groups_exp_list_view_child, null);
        }

        TextView item = (TextView) convertView.findViewById(R.id.ListItem);
        item.setText(contactRow);

        return convertView;
    }

    @Override
    public int getChildrenCount(int arg0) {
        return groupedContactList.size();
    }

    @Override
    public Group getGroup(int arg0) {
        // return
        // groupedContactList.get(HomeScreenActivity.groupsDB.getGroup(arg0+1));
        return (Group)groupedContactList.keySet().toArray()[arg0];
        //return HomeScreenActivity.groupsDB.getGroup(arg0 + 1);
    }

    @Override
    public int getGroupCount() {
        return groupedContactList.keySet().size();
    }

    @Override
    // /PROBABLY WRONGH
    public long getGroupId(int arg0) {
        return arg0;
    }

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

        final String groupName = getGroup(groupPosition).getName();

        if (convertView == null) {
            LayoutInflater infalInflater = (LayoutInflater) context
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView = infalInflater.inflate(
                    R.layout.groups_exp_list_view_header, null);
        }
        TextView item = (TextView) convertView.findViewById(R.id.ListHeader);
        item.setTypeface(null, Typeface.BOLD);
        item.setText(groupName);
        return convertView;

    }

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

    @Override
    public boolean isChildSelectable(int arg0, int arg1) {
        return true;
    }

}
悉达思(Siddharth_Vyas)

下面的代码为我工作:

public class ExpandableListAdapter extends BaseExpandableListAdapter {

private Context mContext;
private ExpandableListView mExpandableListView;
private List<GroupEntity> mGroupCollection;
private int[] groupStatus;

public ExpandableListAdapter(Context pContext,
        ExpandableListView pExpandableListView,
        List<GroupEntity> pGroupCollection) {
    mContext = pContext;
    mGroupCollection = pGroupCollection;
    mExpandableListView = pExpandableListView;
    groupStatus = new int[mGroupCollection.size()];

    setListEvent();
}


private void setListEvent() {

    mExpandableListView
            .setOnGroupExpandListener(new OnGroupExpandListener() {

                @Override
                public void onGroupExpand(int arg0) {
                    // TODO Auto-generated method stub
                    groupStatus[arg0] = 1;
                    mExpandableListView.setSelectedGroup(arg0);
                }
            });

    mExpandableListView
            .setOnGroupCollapseListener(new OnGroupCollapseListener() {

                @Override
                public void onGroupCollapse(int arg0) {
                    // TODO Auto-generated method stub
                    groupStatus[arg0] = 0;
                }
            });
}

@Override
public String getChild(int arg0, int arg1) {
    // TODO Auto-generated method stub
    return mGroupCollection.get(arg0).GroupItemCollection.get(arg1).Name;
}

@Override
public long getChildId(int arg0, int arg1) {
    // TODO Auto-generated method stub
    return 0;
}

@Override
public View getChildView(int arg0, int arg1, boolean arg2, View arg3,
        ViewGroup arg4) {
    // TODO Auto-generated method stub

    ChildHolder childHolder;
    if (arg3 == null) {
        arg3 = LayoutInflater.from(mContext).inflate(
                R.layout.list_group_item, null);

        childHolder = new ChildHolder();

        childHolder.title = (TextView) arg3.findViewById(R.id.item_title);
        arg3.setTag(childHolder);
    } else {
        childHolder = (ChildHolder) arg3.getTag();
    }

    childHolder.title
            .setText(mGroupCollection.get(arg0).GroupItemCollection
                    .get(arg1).Name);

    return arg3;
}

@Override
public int getChildrenCount(int arg0) {
    // TODO Auto-generated method stub
    return mGroupCollection.get(arg0).GroupItemCollection.size();
}

@Override
public Object getGroup(int arg0) {
    return mGroupCollection.get(arg0);
}

@Override
public int getGroupCount() {
    return mGroupCollection.size();
}

@Override
public long getGroupId(int arg0) {
    return arg0;
}

@Override
public View getGroupView(int arg0, boolean arg1, View arg2, ViewGroup arg3) {
    // TODO Auto-generated method stub
    GroupHolder groupHolder;
    if (arg2 == null) {
        arg2 = LayoutInflater.from(mContext).inflate(R.layout.list_group,
                null);
        groupHolder = new GroupHolder();
        groupHolder.img = (ImageView) arg2.findViewById(R.id.tag_img);
        groupHolder.img1 = (FrameLayout) arg2.findViewById(R.id.tag_img1);
        groupHolder.title = (TextView) arg2.findViewById(R.id.group_title);
        arg2.setTag(groupHolder);
    } else {
        groupHolder = (GroupHolder) arg2.getTag();
    }
    if (groupStatus[arg0] == 0) {
        groupHolder.img.setImageResource(R.drawable.icn_max);
        groupHolder.img1
                .setBackgroundResource(R.drawable.content_bgparent1);

    } else {
        groupHolder.img.setImageResource(R.drawable.icn_min);
        groupHolder.img1.setBackgroundResource(R.drawable.active_bg);
    }
    groupHolder.title.setText(mGroupCollection.get(arg0).Name);

    return arg2;
}

class GroupHolder {
    ImageView img;
    FrameLayout img1;
    TextView title;
}

class ChildHolder {
    TextView title;
}

@Override
public boolean hasStableIds() {
    // TODO Auto-generated method stub
    return true;
}

@Override
public boolean isChildSelectable(int arg0, int arg1) {
    // TODO Auto-generated method stub
    return true;
}

}

希望这可以帮助。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Android使用可扩展列表视图

来自分类Dev

如何实现多级可扩展列表视图搜索功能?

来自分类Dev

可扩展列表视图的问题

来自分类Dev

Android:具有不同子布局的可扩展列表视图

来自分类Dev

可扩展列表视图中的 Android AsyncTask .get 方法

来自分类Dev

滚动视图内的可扩展列表视图

来自分类Dev

滚动视图内的可扩展列表视图

来自分类Dev

更改可扩展列表视图的图标

来自分类Dev

notifyDataSetChanged()不刷新可扩展列表视图

来自分类Dev

notifyDataSetChanged()不刷新可扩展列表视图

来自分类Dev

单击可扩展列表视图的控制结果

来自分类Dev

嵌套json解析的可扩展列表视图

来自分类Dev

如何在Android中从对象列表创建可扩展列表视图?

来自分类Dev

在Android中使用自定义列表对象填充可扩展列表视图

来自分类Dev

有没有人在Android导航抽屉中实现可扩展列表

来自分类Dev

我要在附件图像中进行如下所示的可扩展列表视图。如何在扑打中实现这种功能?

来自分类Dev

如何在Android中的可扩展列表视图组和子级中加载JSON数据?

来自分类Dev

可扩展列表视图在Android中的片段活动中不起作用

来自分类Dev

如何在可扩展列表视图android中的子项为空的情况下单击组

来自分类Dev

如何在可扩展列表视图中使用外部字体?(Android Studio)

来自分类Dev

可扩展列表视图在Android中的片段活动中不起作用

来自分类Dev

垂直滚动条在Android内部具有可扩展列表视图

来自分类Dev

如何在可扩展列表视图中使用外部字体?(Android Studio)

来自分类Dev

Android 多级可扩展列表视图设置第三级子项被点击

来自分类Dev

如何在可扩展的回收视图上实现 onclicklistener

来自分类Dev

使用可扩展元素创建列表-Android

来自分类Dev

实现一个扩展列表视图的类

来自分类Dev

导航抽屉-具有可扩展列表视图的ImageView问题

来自分类Dev

在可扩展列表视图中切换组

Related 相关文章

  1. 1

    Android使用可扩展列表视图

  2. 2

    如何实现多级可扩展列表视图搜索功能?

  3. 3

    可扩展列表视图的问题

  4. 4

    Android:具有不同子布局的可扩展列表视图

  5. 5

    可扩展列表视图中的 Android AsyncTask .get 方法

  6. 6

    滚动视图内的可扩展列表视图

  7. 7

    滚动视图内的可扩展列表视图

  8. 8

    更改可扩展列表视图的图标

  9. 9

    notifyDataSetChanged()不刷新可扩展列表视图

  10. 10

    notifyDataSetChanged()不刷新可扩展列表视图

  11. 11

    单击可扩展列表视图的控制结果

  12. 12

    嵌套json解析的可扩展列表视图

  13. 13

    如何在Android中从对象列表创建可扩展列表视图?

  14. 14

    在Android中使用自定义列表对象填充可扩展列表视图

  15. 15

    有没有人在Android导航抽屉中实现可扩展列表

  16. 16

    我要在附件图像中进行如下所示的可扩展列表视图。如何在扑打中实现这种功能?

  17. 17

    如何在Android中的可扩展列表视图组和子级中加载JSON数据?

  18. 18

    可扩展列表视图在Android中的片段活动中不起作用

  19. 19

    如何在可扩展列表视图android中的子项为空的情况下单击组

  20. 20

    如何在可扩展列表视图中使用外部字体?(Android Studio)

  21. 21

    可扩展列表视图在Android中的片段活动中不起作用

  22. 22

    垂直滚动条在Android内部具有可扩展列表视图

  23. 23

    如何在可扩展列表视图中使用外部字体?(Android Studio)

  24. 24

    Android 多级可扩展列表视图设置第三级子项被点击

  25. 25

    如何在可扩展的回收视图上实现 onclicklistener

  26. 26

    使用可扩展元素创建列表-Android

  27. 27

    实现一个扩展列表视图的类

  28. 28

    导航抽屉-具有可扩展列表视图的ImageView问题

  29. 29

    在可扩展列表视图中切换组

热门标签

归档