3

折りたたみまたは展開時にexpandablelistviewグループの背景画像を交換しようとしています。しかし、背景画像は正しくスワップされませんでした。たとえば、最初のグループを展開すると、2番目または3番目のグループの背景が入れ替わります。

私はRelativeLayout(グループレイアウト)とSimpleExpandableListAdapter(アダプター)を使用しています。これが私がしたことです:

// Create 2 drawable background. One for collapse and one for expand
private Drawable collapseBG, expandBG;
private ExpandableListView myView;

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    collapseBG = getResources().getDrawable(R.drawable.box_bg_header_collapse);
    expandBG = getResources().getDrawable(R.drawable.box_bg_header_expand);
    myView = (ExpandableListView) findViewById(R.id.myView);
}

myView.setOnGroupCollapseListener(new ExpandableListView.OnGroupCollapseListener() {
    public void onGroupCollapse(int groupPosition_c) {
        myView.getChildAt(groupPosition_c).setBackgroundDrawable(collapseBG);
    }
});

myView.setOnGroupExpandListener (new ExpandableListView.OnGroupExpandListener() {
    public void onGroupExpand(int groupPosition_e) {
        myView.getChildAt(groupPosition_e).setBackgroundDrawable(expandBG);
    }
});

誰かがこれを機能させる方法を知っていますか?

4

2 に答える 2

23

私はあなたがあなた自身のアダプターを作るべきだと思いますextends SimpleExpandableListAdapter。そのクラスでは、オーバーライドする必要があります

public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
 View result = super.getGroupView(groupPosition, isExpanded, convertView, parent);

 if (isExpanded) {
     result.setBackgroundDrawable(expandBG);
 } else {
     result.setBackgroundDrawable(collapseBG);
 }

 return result;
}

onCreate関数では、次のようにsmthを記述する必要があります。

myView.setlistAdapter (new YourExtendedSimpleExpandableListAdapter( ...... ));

それがあなたを助けることを願っています

于 2010-06-21T11:53:35.500 に答える
1

これを試して

//this is my list

ExpandableListView epView = (ExpandableListView) findViewById(R.id.TranscationList);

//set two listeners 

//i have to images  

epView.setOnGroupCollapseListener(new OnGroupCollapseListener() {

            @Override
            public void onGroupCollapse(int groupPosition) {
                 ImageView arrowDown;
                    ImageView arrowUp;
                    arrowUp = (ImageView)findViewById(R.id.arrowUp);
                    arrowDown =(ImageView)findViewById(R.id.arrowDown);
                      arrowUp.setVisibility(View.INVISIBLE);
                       arrowDown.setVisibility(View.VISIBLE);

            }
        });
epView.setOnGroupExpandListener(new OnGroupExpandListener() {

@Override
public void onGroupExpand(int arg0) {
                  ImageView arrowDown;
                    ImageView arrowUp;
                    arrowUp = (ImageView)findViewById(R.id.arrowUp);
                    arrowDown =(ImageView)findViewById(R.id.arrowDown);
                      arrowUp.setVisibility(View.VISIBLE);
                       arrowDown.setVisibility(View.INVISIBLE);
            }
        });
于 2011-08-11T06:47:33.917 に答える