簡體   English   中英

Android ExpandableListView沒有擴展

[英]Android ExpandableListView not expanding

我正在為城市制作一個可擴展的列表視圖,但它不會擴展。 我有另外一個幾乎完全像這個,但這個不會擴大,我花了很多時間試圖看到什么是錯的,不能再浪費,有人可以指出問題嗎?

我也調用了expandGroup(0),但它仍然沒有擴展(好像沒有什么可擴展的)。

XML

<ExpandableListView
                        android:id="@+id/judet"
                        android:layout_width="fill_parent"
                        android:layout_height="wrap_content"
                        android:layout_margin="10dp"
                        android:choiceMode="singleChoice"
                        android:groupIndicator="@null"
                        android:smoothScrollbar="true" >
                    </ExpandableListView>

在我的主要班級

final AdapterJudet adapterJudet = new AdapterJudet(getApplicationContext());
ExpandableListView judet = (ExpandableListView) findViewById(R.id.judet);
judet.setAdapter(adapterJudet);
judet.setOnChildClickListener(new OnChildClickListener() {
            @Override
            public boolean onChildClick(ExpandableListView parent, View v,
                    int groupPosition, int childPosition, long id) {

                AdapterJudet.selected = AdapterJudet.judete[childPosition];
                judet.collapseGroup(0);
                return false;
            }
        });

適配器類

public class AdapterJudet extends BaseExpandableListAdapter {

    Context ctx;
    static String [] judete = {"Alba","Arad","Arges","Bacau","Bihor","Bistrita-Nasaud","Botosani","Brasov","Braila","Buzau","Caras-Severin","Cluj","Constanta","Covasna","Dambovita","Dolj","Galati","Giurgiu","Gorj","Hargita","Hunedoara","Ialomita","Maramures","Mehedinti","Mures","Neamt","Olt","Prahova","Satu-Mare","Salaj","Sibiu","Teleorman","Timis","Tulcea","Valcea","Vaslui","Vrancea","Bucuresti","Ilfov","Calarasi","Iasi","Suceava"};
    static String selected = "Judet";
    static int judetID = -1;

    public AdapterJudet (Context ctx){
        this.ctx = ctx;
    }

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

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

    @Override
    public View getChildView(int groupPosition, int childPosition,
            boolean isLastChild, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub
        View v = convertView;

        if (v == null) {
            LayoutInflater inflater = (LayoutInflater) ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            v = inflater.inflate(R.layout.item_layout, parent, false);
        }

        TextView itemName = (TextView) v.findViewById(R.id.itemName);

        itemName.setText(judete[childPosition]);
        judetID = childPosition;
        return v;
    }

    @Override
    public int getChildrenCount(int groupPosition) {
        // TODO Auto-generated method stub
        return judete.length;
    }

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

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

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

    @Override
    public View getGroupView(int groupPosition, boolean isExpanded,
            View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub
        View v = convertView;

        if (v == null) {
            LayoutInflater inflater = (LayoutInflater) ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            v = inflater.inflate(R.layout.group_layout, parent, false);
        }

        TextView groupName = (TextView) v.findViewById(R.id.groupName);

        groupName.setText(selected);

        return v;
    }

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

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

}

我知道這個問題已經有一段時間了,我希望這有助於有人尋找答案。 當您有可點擊的小部件(如按鈕,復選框)時,為它們設置以下屬性:

android:focusable="false"

我猜測會發生什么事情是這些小部件竊取了焦點(雖然只有輸入來自鍵盤或類似的東西才有意義)並自動阻止隱式點擊監聽器(如組展開,崩潰發生隱式而不設置點擊監聽器)。

如果您仍想維護窗口小部件的可聚焦屬性,那么此時唯一的替代方法似乎是在適配器對象的getView()方法中找到單個元素並設置顯式單擊偵聽器。

我知道你問這個問題差不多已經一年了....

我遇到了同樣的問題。 檢查您要為組視圖展開的布局中是否有任何“可點擊”小部件。 我的組視圖布局中有一個按鈕,它沒有將點擊傳遞給組。 刪除按鈕解決了我的問題。

將它用於ExpandableListView

list.setOnGroupClickListener(new ExpandableListView.OnGroupClickListener() {
            @Override
            public boolean onGroupClick(ExpandableListView parent, View v, int groupPosition, long id) {
                return  list.isGroupExpanded(groupPosition) ? list.collapseGroup(groupPosition) : list.expandGroup(groupPosition);
            }
        });

我記得幾個月前遇到過類似的問題,請嘗試改變

android:layout_height="wrap_content"

android:layout_height="match_parent"

為我工作android:descendantFocusability =“blocksDescendants”在父視圖中添加上面的行

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM