当前位置: 代码迷 >> Android >> Android支持铺展/收缩功能的列表控件
  详细解决方案

Android支持铺展/收缩功能的列表控件

热度:136   发布时间:2016-04-24 11:57:59.0
Android支持展开/收缩功能的列表控件

关注微信号:javalearns?? 随时随地学Java

或扫一扫

?

?

随时随地学Java

最近在做一个Rss阅读器,看了下别人做的阅读器中的列表控件可以展开、收缩,我就在网上搜索了一下。下面就我找到的一个小例子,给大家分享一下。

ActivityMain .java

package study.com.android;import android.app.ExpandableListActivity;import android.os.Bundle;import android.view.ContextMenu;import android.view.MenuItem;import android.view.View;import android.view.ContextMenu.ContextMenuInfo;import android.widget.ExpandableListAdapter;import android.widget.ExpandableListView;import android.widget.TextView;import android.widget.Toast;import android.widget.ExpandableListView.ExpandableListContextMenuInfo;public class ActivityMain extends ExpandableListActivity {	private ExpandableListAdapter mAdapter;	@Override	public void onCreate(Bundle savedInstanceState) {		super.onCreate(savedInstanceState);		this.setTitle("ExpandableList");		mAdapter = new MyExpandableListAdapter(this);		setListAdapter(mAdapter);		registerForContextMenu(this.getExpandableListView());	}	// 为列表的每一项创建上下文菜单(即长按后 呼出的菜单)	@Override	public void onCreateContextMenu(ContextMenu menu, View v,			ContextMenuInfo menuInfo) {		menu.setHeaderTitle("ContexMenu");		menu.add(0, 0, 0, "ContextMenu");	}	// 单击上下文菜单后的逻辑	@Override	public boolean onContextItemSelected(MenuItem item) {		ExpandableListContextMenuInfo info = (ExpandableListContextMenuInfo) item				.getMenuInfo();		String title = ((TextView) info.targetView).getText().toString();		int type = ExpandableListView				.getPackedPositionType(info.packedPosition);		if (type == ExpandableListView.PACKED_POSITION_TYPE_CHILD) {			int groupPos = ExpandableListView					.getPackedPositionGroup(info.packedPosition);			int childPos = ExpandableListView					.getPackedPositionChild(info.packedPosition);			Toast.makeText(					this,					title + "-Group Index" + groupPos + "Child Index:"							+ childPos, Toast.LENGTH_SHORT).show();			return true;		}		return false;	}}

MyExpandableListAdapter.java

package study.com.android;import android.content.Context;import android.view.Gravity;import android.view.View;import android.view.ViewGroup;import android.widget.AbsListView;import android.widget.BaseExpandableListAdapter;import android.widget.TextView;public class MyExpandableListAdapter extends BaseExpandableListAdapter {	private Context mContext;	// 父列表数据	private String[] groups = { "group1", "group2", "group3", "group4", "" };	// 子列表数据	private String[][] children = { { "child1" }, { "child1", "child2" },			{ "child1", "child2", "child3" },			{ "child1", "child2", "child3", "child4" }, };	MyExpandableListAdapter(Context context) {		mContext = context;	}	@Override	public Object getChild(int groupPosition, int childPosition) {		// TODO Auto-generated method stub		return children[groupPosition][childPosition];	}	@Override	public long getChildId(int groupPosition, int childPosition) {		// TODO Auto-generated method stub		return childPosition;	}	// 取子列表中的某一项的view	@Override	public View getChildView(int groupPosition, int childPosition,			boolean isLastChild, View convertView, ViewGroup parent) {		TextView textView = getGenericView();		;		textView.setText(getChild(groupPosition, childPosition).toString());		return textView;	}	@Override	public int getChildrenCount(int groupPosition) {		// TODO Auto-generated method stub		return children[groupPosition].length;	}	@Override	public Object getGroup(int groupPosition) {		return groups[groupPosition];	}	@Override	public int getGroupCount() {		// TODO Auto-generated method stub		return groups.length;	}	@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) {		TextView textView = getGenericView();		textView.setText(getGroup(groupPosition).toString());		return textView;	}	@Override	public boolean hasStableIds() {		// TODO Auto-generated method stub		return true;	}	@Override	public boolean isChildSelectable(int groupPosition, int childPosition) {		// TODO Auto-generated method stub		return true;	}	// 获取某一项的view的逻辑	private TextView getGenericView() {		AbsListView.LayoutParams lp = new AbsListView.LayoutParams(				ViewGroup.LayoutParams.FILL_PARENT, 48);		TextView textView = new TextView(mContext);		textView.setLayoutParams(lp);		textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.LEFT);		textView.setPadding(32, 0, 0, 0);		return textView;	}}

运行的结果如下:

列表收缩

列表展开

关注微信号:javalearns?? 随时随地学Java

或扫一扫

?

?

随时随地学Java

  相关解决方案