android expandablelistview 动画,Android SlideExpandableListView滑动显示隐藏面板

谭宏盛
2023-12-01

快速实现一个滑动显示隐藏面板的ListView

基本用法:listView = (ListView) view.findViewById(R.id.listView);

protected void notifyDataSetChanged() {

if (adapter == null) {

adapter = new CommonAdapter(context, beans, layoutId) {

@Override

public void setValues(ViewHolder helper, T item, int position) {

createItem(helper, item, position);

}

};

listView.setAdapter(new SlideExpandableListAdapter(adapter,

R.id.expandable_toggle_button, R.id.expandable));

} else {

adapter.notifyDataSetChanged();

}

}

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

在你的item布局文件中需要有ID为expandable_toggle_button的把手,和ID为expandable的面板容器

典型的像下面这样:<?xml  version="1.0" encoding="utf-8"?>

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:orientation="vertical" >

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:paddingLeft="8dp"

android:paddingRight="8dp"

android:orientation="vertical" >

android:id="@+id/item_0"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_gravity="center_vertical|start"

android:gravity="center"

android:singleLine="true"

android:text="订单编号"

android:textColor="@color/base_black"

android:textSize="@dimen/font_middle" />

android:id="@+id/item_1"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_gravity="center_vertical|end"

android:gravity="center"

android:paddingBottom="8dp"

android:paddingTop="8dp"

android:singleLine="true"

android:text="进场时间"

android:textColor="@color/base_black"

android:textSize="@dimen/font_middle" />

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:paddingLeft="8dp"

android:paddingRight="8dp"

android:orientation="horizontal" >

android:id="@+id/item_2"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_gravity="center_vertical|start"

android:gravity="center"

android:singleLine="true"

android:text="停车场名称"

android:textColor="@color/base_black"

android:textSize="@dimen/font_middle" />

android:id="@+id/expandable_toggle_button"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_gravity="center_vertical|end"

android:layout_marginRight="16dp"

android:src="@drawable/bg_btn_more" />

android:id="@+id/expandable"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:background="@color/base_gray"

android:orientation="horizontal"

>

android:id="@+id/btn_0"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:layout_weight="1"

android:drawableTop="@drawable/bg_btn_0"

android:gravity="center"

android:singleLine="true"

android:text="取消订单"

android:textColor="@android:color/white"

android:textSize="@dimen/font_middle" />

android:id="@+id/btn_1"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:layout_weight="1"

android:drawableTop="@drawable/bg_btn_0"

android:gravity="center"

android:singleLine="true"

android:text="联系对方"

android:textColor="@android:color/white"

android:textSize="@dimen/font_middle" />

android:id="@+id/btn_2"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:layout_weight="1"

android:drawableTop="@drawable/bg_btn_0"

android:gravity="center"

android:singleLine="true"

android:text="退订"

android:textColor="@android:color/white"

android:textSize="@dimen/font_middle" />

android:id="@+id/btn_3"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:layout_weight="1"

android:drawableTop="@drawable/bg_btn_0"

android:gravity="center"

android:singleLine="true"

android:text="进场"

android:textColor="@android:color/white"

android:textSize="@dimen/font_middle" />

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

如果你嫌上面的做法麻烦:

还有简单的,使用ActionSlideExpandableListView控件,无需指定具体的把手ID和面板ID;

但是我通常不这样做,因为毕竟使用的是ActionSlideExpandableListView,而不是普通的ListView,扩展性可能会受限制。

附件使用的是ActionSlideExpandableListView控件public class MainActivity extends Activity {

@Override

public void onCreate(Bundle savedData) {

super.onCreate(savedData);

// set the content view for this activity, check the content view xml file

// to see how it refers to the ActionSlideExpandableListView view.

this.setContentView(R.layout.single_expandable_list);

// get a reference to the listview, needed in order

// to call setItemActionListener on it

ActionSlideExpandableListView list = (ActionSlideExpandableListView)this.findViewById(R.id.list);

// fill the list with data

list.setAdapter(buildDummyData());

// listen for events in the two buttons for every list item.

// the 'position' var will tell which list item is clicked

list.setItemActionListener(new ActionSlideExpandableListView.OnActionClickListener() {

@Override

public void onClick(View listView, View buttonview, int position) {

/**

* Normally you would put a switch

* statement here, and depending on

* view.getId() you would perform a

* different action.

*/

String actionName = "";

if(buttonview.getId()==R.id.buttonA) {

actionName = "buttonA";

} else {

actionName = "ButtonB";

}

/**

* For testing sake we just show a toast

*/

Toast.makeText(

MainActivity.this,

"Clicked Action: "+actionName+" in list item "+position,

Toast.LENGTH_SHORT

).show();

}

// note that we also add 1 or more ids to the setItemActionListener

// this is needed in order for the listview to discover the buttons

}, R.id.buttonA, R.id.buttonB);

}

/**

* Builds dummy data for the test.

* In a real app this would be an adapter

* for your data. For example a CursorAdapter

*/

public ListAdapter buildDummyData() {

final int SIZE = 40;

String[] values = new String[SIZE];

for(int i=0;i

values[i] = "Item "+i;

}

return new ArrayAdapter(

this,

R.layout.expandable_list_item,

R.id.text,

values

);

}

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

ExpandableLayout可扩展布局,各种动画效果http://www.jcodecraeer.com/a/opensource/2015/0909/3431.html

小奋斗文章

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 类似资料: