OnChildClickListener无法在可扩展列表视图中工作

时间:2015-08-07 08:07:52

标签: android android-listview expandablelistview onclicklistener

我不知道这段代码有什么问题我的onChildClickListener()没有被调用我已经看到了一些答案,他们说覆盖isChildSelected并返回true;我也试过了,但它还没有被调用。任何人都可以帮助我。任何帮助,将不胜感激。感谢。

public class Expand {
    Context context;

    private RelativeLayout relativeLayout;
    private String[] headerText;
    String[] secondHeaderTitle;
    int[] secondHeaderVisibilty;
    String[][] drdatewise;
    String[][] spec;
    ExpandableListView listView;
    ExampleAdapter adapter;

    public TextView secondHeader;

    public Expand(Context context, String headerText[],
            String[] secondHeaderTitle, int[] secondHeaderVisibilty,
            String[][] drdatewise, String[][] spec) {
        this.context = context;
        this.headerText = headerText;
        this.secondHeaderTitle = secondHeaderTitle;
        this.secondHeaderVisibilty = secondHeaderVisibilty;
        secondHeader = new TextView(context);
        this.drdatewise = drdatewise;
        this.spec = spec;

    }

    public View GetView() {

        List<GroupItem> items = new ArrayList<GroupItem>();

        // Populate our list with groups and it's children
        for (int i = 0; i < headerText.length; i++) {
            GroupItem item = new GroupItem();

            item.title = headerText[i];

            for (int j = 0; j < drdatewise[i].length; j++) {
                ChildItem child = new ChildItem();
                child.title1String = drdatewise[i][j];
                child.title2String = spec[i][j];
                child.title3String = "Class A";
                child.title4String = "Mumbai";
                item.items.add(child);
            }

            items.add(item);
        }
        adapter = new ExampleAdapter(context);
        adapter.setData(items);
        LayoutInflater inflater = (LayoutInflater) context
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        relativeLayout = (RelativeLayout) inflater.inflate(
                R.layout.activity_main_gb, null);

        listView = (ExpandableListView) relativeLayout
                .findViewById(R.id.listView);
        listView.setAdapter(adapter);
        listView.setOnChildClickListener(new OnChildClickListener() {

            @Override
            public boolean onChildClick(ExpandableListView parent, View v,
                    int groupPosition, int childPosition, long id) {
                // TODO Auto-generated method stub
                Toast.makeText(context, "Mine mine minemie n", Toast.LENGTH_SHORT).show();
                return true;
            }
        });
        return relativeLayout;
    }

    private class ExampleAdapter extends BaseExpandableListAdapter {
        private LayoutInflater inflater;

        private List<GroupItem> items;
        View convertView;

        public ExampleAdapter(Context context) {
            inflater = LayoutInflater.from(context);
        }

        public void setData(List<GroupItem> items) {
            this.items = items;
        }

        @Override
        public ChildItem getChild(int groupPosition, int childPosition) {
            return items.get(groupPosition).items.get(childPosition);
        }

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

        @Override
        public View getChildView(int groupPosition, int childPosition,
                boolean isLastChild, View convertView, ViewGroup parent) {
            ChildHolder holder;
            ChildItem item = getChild(groupPosition, childPosition);
            this.convertView = convertView;
            if (convertView == null) {
                holder = new ChildHolder();
                convertView = inflater.inflate(R.layout.child_view_cal, parent,
                        false);
                holder.title1 = (TextView) convertView
                        .findViewById(R.id.childtextview1);
                holder.title2 = (TextView) convertView
                        .findViewById(R.id.childtextview2);
                holder.title3 = (TextView) convertView
                        .findViewById(R.id.childtextview3);
                holder.title4 = (TextView) convertView
                        .findViewById(R.id.childtextview4);
                convertView.setTag(holder);

            } else {
                holder = (ChildHolder) convertView.getTag();
            }

            holder.title1.setText(item.title1String);
            holder.title2.setText(item.title2String);
            holder.title3.setText(item.title3String);
            holder.title4.setText(item.title4String);

            return convertView;
        }

        @Override
        public int getChildrenCount(int groupPosition) {
            return items.get(groupPosition).items.size();
        }

        @Override
        public GroupItem getGroup(int groupPosition) {
            return items.get(groupPosition);
        }

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

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

        @Override
        public View getGroupView(int groupPosition, boolean isExpanded,
                View convertView, ViewGroup parent) {
            GroupHolder holder;
            GroupItem item = getGroup(groupPosition);
            if (convertView == null) {
                holder = new GroupHolder();
                convertView = inflater.inflate(R.layout.parent_view_cal,
                        parent, false);
                holder.title = (TextView) convertView
                        .findViewById(R.id.headertextview);
                holder.patches = (TextView) convertView
                        .findViewById(R.id.headertextview2223);
                holder.count = (TextView) convertView
                        .findViewById(R.id.headertextview223);

                convertView.setTag(holder);
            } else {
                holder = (GroupHolder) convertView.getTag();
            }

            holder.title.setText(item.title);
            int countD = getChildrenCount(groupPosition);
            holder.count.setText("" + countD);
            holder.patches.setText("1");
            return convertView;
        }

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

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

    }

    private static class GroupHolder {
        TextView title;
        TextView patches;
        TextView count;
    }

    private static class GroupItem {
        String title;
        String secondHeaderTitle;
        List<ChildItem> items = new ArrayList<ChildItem>();
    }

    private static class ChildItem {
        String title1String;
        String title2String;
        String title3String;
        String title4String;
    }

    private static class ChildHolder {
        TextView title1;
        TextView title2;
        TextView title3;
        TextView title4;
    }
}

子视图

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:clickable="true"
    android:orientation="vertical"
    tools:context=".MainActivity" >

    <LinearLayout
        android:id="@+id/upperlayout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="#E3ECF5"
        android:gravity="center_vertical"
        android:orientation="horizontal" >

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:gravity="center_vertical"
            android:paddingLeft="10dp"
            android:paddingTop="13dp" >

            <ImageView
                android:id="@+id/childImage"
                android:layout_width="58dp"
                android:layout_height="58dp"
                android:layout_gravity="left"
                android:src="@drawable/ic_account_box_black_48dp" />
        </LinearLayout>

        <LinearLayout
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_marginLeft="5dp"
            android:layout_weight="1"
            android:gravity="left"
            android:orientation="vertical"
            android:paddingBottom="10dp"
            android:paddingTop="10dp" >

            <TextView
                android:id="@+id/childtextview1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="5dp"
                android:text="Data1"
                android:textColor="#424242"
                android:textSize="18sp"
                android:textStyle="bold" />

            <TextView
                android:id="@+id/childtextview2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="5dp"
                android:text="Data2"
                android:textColor="#424242"
                android:textSize="16sp"
                android:textStyle="normal" />

            <TextView
                android:id="@+id/childtextview3"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="5dp"
                android:text="Data3"
                android:textColor="#424242"
                android:textSize="14sp"
                android:textStyle="normal" />

            <TextView
                android:id="@+id/childtextview4"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="5dp"
                android:text="Data4"
                android:textColor="#424242"
                android:textSize="14sp"
                android:textStyle="normal" />
        </LinearLayout>

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:gravity="center_vertical"
            android:paddingLeft="10dp"
            android:paddingTop="13dp" >

            <TextView
                android:id="@+id/time"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="right|center_vertical"
                android:text="11:00" />
        </LinearLayout>
    </LinearLayout>

    <View
        android:layout_width="match_parent"
        android:layout_height="4dp"
        android:layout_below="@+id/upperlayout"
        android:background="#FFFFFF" />

</RelativeLayout>

1 个答案:

答案 0 :(得分:2)

子布局中的ImageView和可能TextView可能会拦截点击事件。在您的XML中,尝试将android:focusable="false"添加到所有这些元素。