0

カスタム ExpandableListView を実装しましたが、データが表示されません。

これが私のレイアウトです。

activity_cust_mainlist.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <TextView
        android:id="@+id/tv_cust_salesRep"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:layout_marginRight="94dp"
        android:gravity="left"
        android:text="sales man"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <TextView
        android:id="@+id/tv_cust_header"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/tv_cust_salesRep"
        android:gravity="center"
        android:text="Lista de Clientes"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <LinearLayout
        android:id="@+id/lin"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/tv_cust_header"
        android:layout_centerHorizontal="true"
        android:weightSum="11" >

        <TextView
            android:id="@+id/tv_custtime"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="3"
            android:gravity="center"
            android:text="Horario"
            android:textAppearance="?android:attr/textAppearanceMedium" />

        <TextView
            android:id="@+id/tv_custid"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="2"
            android:gravity="center"
            android:text="Cod"
            android:textAppearance="?android:attr/textAppearanceMedium" />

        <TextView
            android:id="@+id/tv_custname"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="6"
            android:gravity="center"
            android:text="Nombre"
            android:textAppearance="?android:attr/textAppearanceMedium" />
    </LinearLayout>

    <ExpandableListView
        android:id="@+id/eLV_customers"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/lin" >
    </ExpandableListView>

</RelativeLayout>

activity_cust_group_list.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" 
    android:weightSum="11">

    <TextView
        android:id="@+id/tv_custList_Time"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="3"
        android:gravity="center"
        android:text="Horario"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <TextView
        android:id="@+id/tv_custList_id"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="2"
        android:gravity="center"
        android:text="Cod"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <TextView
        android:id="@+id/tv_custList_Name"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="6"
        android:gravity="center"
        android:text="Nombre"
        android:textAppearance="?android:attr/textAppearanceMedium" />

</LinearLayout>

activity_cust_child_list.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/LinearLayout2"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/tv_clildList_refe"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:text="REFE"
        android:textAppearance="?android:attr/textAppearanceMedium" />

</LinearLayout>

実際のコード: CustomerActivity

  package com.dhiraj.mpos;

    import java.util.ArrayList;

    import android.app.Activity;
    import android.content.Context;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.BaseExpandableListAdapter;
    import android.widget.ExpandableListAdapter;
    import android.widget.ExpandableListView;
    import android.widget.TextView;

    public class CustomerActivity extends Activity {

        private ArrayList<String> parentItems;
        private ArrayList<Object> childItems;

        ExpandableListView listView;
        ExpandableListAdapter listAdapter;

        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_cust_temp);

            parentItems = new ArrayList<String>();
            childItems = new ArrayList<Object>();
            setGroupParents();
            setChildData();

            listView = (ExpandableListView) findViewById(R.id.eLV_customers);
            listAdapter = new MyCustomExpandableAdapter(parentItems, childItems);

            listView.setAdapter(listAdapter);
            Log.i("dhiraj", "adapter set");

        }

        private class MyCustomExpandableAdapter extends BaseExpandableListAdapter {
            ArrayList<String> parent,child;
            ArrayList<Object> children;

            MyCustomExpandableAdapter(ArrayList<String> parents,
                    ArrayList<Object> childern) {
                this.parent = parents;
                this.children = childern;           
                Log.i("dhiraj", " constructor");
            }

            @Override
            public Object getChild(int arg0, int arg1) {
                // TODO Auto-generated method stub
                return null;
            }

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

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

                child=(ArrayList<String>)children.get(groupPosition);

                Log.i("dhiraj", "getChildView : " + child.toString());

                if (convertView == null) {
                    LayoutInflater inflater = (LayoutInflater) CustomerActivity.this
                            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                    inflater.inflate(R.layout.activity_cust_child_list, null);
                }

                TextView tv1=(TextView)convertView.findViewById(R.id.tv_clildList_refe);
                tv1.setText(child.get(childPosition));

                return convertView;
            }

            @Override
            public int getChildrenCount(int arg0) {
                // TODO Auto-generated method stub
                return 0;
            }

            @Override
            public Object getGroup(int arg0) {
                // TODO Auto-generated method stub
                return null;
            }

            @Override
            public int getGroupCount() {
                // TODO Auto-generated method stub
                return 0;
            }

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

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

                Log.i("dhiraj", "groupView");


                if (convertView == null) {
                    LayoutInflater inflater = (LayoutInflater) CustomerActivity.this
                            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                    inflater.inflate(R.layout.activity_cust_group_list, null);

                }

                TextView tv_time = (TextView) convertView
                        .findViewById(R.id.tv_custList_Time);
                TextView tv_id = (TextView) convertView
                        .findViewById(R.id.tv_custList_id);
                TextView tv_name = (TextView) convertView
                        .findViewById(R.id.tv_custList_Name);

                tv_name.setText(this.parent.get(groupPosition));

                return convertView;
            }

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

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

        public void setGroupParents() {
            parentItems.add("Fruits");
            parentItems.add("Flowers");
            parentItems.add("Animals");
            parentItems.add("Birds");
            Log.i("dhiraj", "group items set");
        }

        // method to set child data of each parent
        public void setChildData() {

            // Add Child Items for Fruits
            ArrayList<String> child = new ArrayList<String>();
            child.add("Apple");
            child.add("Mango");
            child.add("Banana");
            child.add("Orange");

            childItems.add(child);

            // Add Child Items for Flowers
            child = new ArrayList<String>();
            child.add("Rose");
            child.add("Lotus");
            child.add("Jasmine");
            child.add("Lily");

            childItems.add(child);

            // Add Child Items for Animals
            child = new ArrayList<String>();
            child.add("Lion");
            child.add("Tiger");
            child.add("Horse");
            child.add("Elephant");

            childItems.add(child);

            // Add Child Items for Birds
            child = new ArrayList<String>();
            child.add("Parrot");
            child.add("Sparrow");
            child.add("Peacock");
            child.add("Pigeon");

            childItems.add(child);

            Log.i("dhiraj", "child items set");

        }
    }
4

2 に答える 2

1

アダプターでは、オーバーライドされたメソッドが 0、null を返すことに注意してください。実際にはアイテムとアイテム数を返す必要があります。アプリをデバッグすると、アダプターの数が常に 0 であることがわかります。アクティビティからすべての配線を行い、すべてのグループと子項目を追加すると、何も表示されません。

getGroupCount() を変更して groupItems.size() を返し、getChildCount() も同じようにしてみてください

問題が解決したかどうかをお知らせください

于 2013-11-10T08:02:51.913 に答える
1

getChildrenCount が 0 を返し、getGroupCount も 0 を返しています。

各グループの正しいカウントを返すように変更する必要があります。

于 2013-11-10T08:06:10.843 に答える