2

展開可能なリストがあり、子アイテムをクリックしたときにレイアウト全体を変更したいのですが、グループアイテムをクリックしたときは変更しません。このように子アイテムを選択しようとすると、すべてのアイテムが変更されます。

while(parent.getChildAt(i)!=null){
    do something..
}

コードは次のとおりです。

private OnChildClickListener menuListOnChildClickListener = new OnChildClickListener() 
{
    public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) 
    {
       //change whole layout of whole children with an inflator
       //change the one clicked with another inflator
        v.setBackgroundColor(Color.BLACK);
        Toast.makeText(getApplicationContext(), "Tıklandı"+childPosition, Toast.LENGTH_SHORT).show();
        switch(childPosition){
            case 1:
            relativeLayout_sagOrtaEkranlar.setVisibility(v.INVISIBLE);
            relativeLayout_sagOrtaAnasayfa.setVisibility(v.VISIBLE);
            break;
            case 2:
            relativeLayout_sagOrtaEkranlar.setVisibility(v.VISIBLE);
            relativeLayout_sagOrtaAkilliEv.setVisibility(v.VISIBLE);
            relativeLayout_sagOrtaAkilliEvPerde.setVisibility(v.INVISIBLE);
            relativeLayout_sagOrtaAnasayfa.setVisibility(v.INVISIBLE);
            break;
            case 3:
            relativeLayout_sagOrtaEkranlar.setVisibility(v.VISIBLE);
            relativeLayout_sagOrtaAkilliEv.setVisibility(v.INVISIBLE);
            relativeLayout_sagOrtaAkilliEvPerde.setVisibility(v.VISIBLE);
            relativeLayout_sagOrtaAnasayfa.setVisibility(v.INVISIBLE);  
            break;  
            default:
            break;
        }
        return true;
    } 

解決策はありますか?

4

1 に答える 1

0

子アイテムを理解するために、アダプターの最初の子のサイズ(sizeはサイズ()関数ではなく静的変数)をカウントし、レイアウトを変更しながらメインのchildOnClickから呼び出す必要がありました。

int i=0;
while(parent.getChildAt(i)!=null){
    if((i>0 && i<ExpandListAdapter.size)){
        c=(ImageView) parent.getChildAt(i).findViewById(R.id.iv_listChild);
        c.setVisibility(View.VISIBLE);
        d=(ImageView) parent.getChildAt(i).findViewById(R.id.iv_listChild2);
        d.setVisibility(View.INVISIBLE);
    }
    i++;
}
于 2012-12-18T07:36:22.303 に答える