I have a nested listview to display information about TV shows
first the Root listview shows the TV show name
when you click on the show name, you get a list of Episodes for the
show, including a title,  episode number, and episode name
if you click on a show, it opens up another activity

I have two problems, first, if you open one of the Show Names, you can
click on the episodes and it handles it properly.  However if you
close that show, and open a second, you can no longer click on
episodes, even earlier ones, that worked.

Here is the BaseExpandableListAdapter Implementation:


public class MyExpandableListAdapter extends BaseExpandableListAdapter
{

                private ArrayList<String> groups = new ArrayList<String>();
                private ArrayList<ArrayList<ArrayList<String>>> children = new
ArrayList<ArrayList<ArrayList<String>>>();
                private LayoutInflater mInflater;

                public MyExpandableListAdapter(Context context) {
                        groups.clear();
                        mInflater = LayoutInflater.from(context);
                        for (int i = 0; i < group.size(); i++) {
                                groups.add(group.get(i));
                        }
                        int k = 0;
                        for (int i = 0; i < group.size(); i++) {
                                ArrayList<ArrayList<String>> outer = new
ArrayList<ArrayList<String>>();
                                while ((k < videoName.size())
                                                && 
(videoName.get(k).equals(groups.get(i)))) {
                                        ArrayList<String> inner = new 
ArrayList<String>();
                                        inner.add(videoName.get(k));
                                        inner.add(videoEpsNumber.get(k));
                                        inner.add(videoEpsName.get(k));
                                        inner.add(videoLocation.get(k));
                                        outer.add(inner);
                                        k++;
                                }
                                children.add(outer);
                        }
                }

                public Object getChild(int groupPosition, int childPosition) {
                        return children.get(groupPosition).get(childPosition);
                }

                public long getChildId(int groupPosition, int childPosition) {
                        return childPosition;
                }

                public int getChildrenCount(int groupPosition) {
                        return children.get(groupPosition).size();
                }

                public TextView getGenericView() {
                        // Layout parameters for the ExpandableListView
                        AbsListView.LayoutParams lp = new 
AbsListView.LayoutParams(
                                        ViewGroup.LayoutParams.FILL_PARENT, 64);

                        TextView textView = new TextView(VideoList.this);
                        textView.setLayoutParams(lp);
                        // Center the text vertically
                        textView.setGravity(Gravity.CENTER_VERTICAL | 
Gravity.LEFT);
                        // Set the text starting position
                        textView.setPadding(86, 0, 0, 0);
                        return textView;
                }

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

                        ViewHolder holder;
                        if (convertView == null) {
                                convertView = 
mInflater.inflate(R.layout.listview, null);
                                holder = new ViewHolder();
                                holder.title = (TextView) convertView
                                                .findViewById(R.id.TextView01);
                                holder.number = (TextView) convertView
                                                .findViewById(R.id.TextView02);
                                holder.name = (TextView) convertView
                                                .findViewById(R.id.TextView03);
                                convertView.setTag(holder);
                        } else {
                                convertView.setClickable(true);
                                holder = (ViewHolder) convertView.getTag();
                        }

                        
holder.title.setText(children.get(groupPosition).get(childPosition)
                                        .get(0));
                        holder.number.setText(children.get(groupPosition)
                                        .get(childPosition).get(1));
                        
holder.name.setText(children.get(groupPosition).get(childPosition)
                                        .get(2));

                        return convertView;
                }

                public Object getGroup(int groupPosition) {
                        return groups.get(groupPosition);
                }

                public int getGroupCount() {
                        return groups.size();
                }

                public long getGroupId(int groupPosition) {
                        return groupPosition;
                }

                public View getGroupView(int groupPosition, boolean isExpanded,
                                View convertView, ViewGroup parent) {
                        TextView textView = getGenericView();
                        textView.setText(getGroup(groupPosition).toString());
                        return textView;
                }

                public boolean isChildSelectable(int groupPosition, int
childPosition) {
                        return true;
                }

                public boolean hasStableIds() {
                        return true;
                }

                public int getlongID(int groupPosition, int childPosition) {
                        int retval = 0;
                        for (int i = 0; i < groupPosition; i++) {
                                retval += children.get(i).size();
                        }
                        retval += childPosition;

                        return retval;
                }

                class ViewHolder {
                        TextView title;
                        TextView number;
                        TextView name;
                }
        }

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to