Android_ExpandableListView_子item响应点击事件
2013-12-16 22:14
423 查看
本博文为子墨原创,转载请注明出处!
http://blog.csdn.net/zimo2013/article/details/17362189
3.代码实现
http://blog.csdn.net/zimo2013/article/details/17362189
1.满足条件
如果使用ExpandableListView,需要子item响应一个事件,比如重新启动一个新的activity,需要满足下面的条件:(1).修改Adapter返回值
覆写BaseExpandableListAdapter的isChildSelectable()的返回值为true;(2).绑定监听器
调用ExpandableListView对象的setOnChildClickListener()方法,为其绑定监听器2.示意图
3.代码实现
public class MovieAdapter extends BaseExpandableListAdapter { private List<IncomingBean> list; private LayoutInflater inflater; public MovieAdapter(Context context) { inflater = LayoutInflater.from(context); list = new ArrayList<IncomingBean>(); } public void addList(List<IncomingBean> list) { this.list.addAll(list); } public List<IncomingBean> getList() { return list; } private class ViewHolder { TextView tvDay; TextView tvMonth; View vLine; ImageView ivPic; TextView tvTitle; TextView tvType; TextView tvDirector; /** 预告片 */ Button btForenotice; /** 提醒 */ public ViewHolder(View view) { tvDay = (TextView) view.findViewById(R.id.tv_incoming_day); vLine = view.findViewById(R.id.left_green_line); tvMonth = (TextView) view.findViewById(R.id.tv_month); ivPic = (ImageView) view.findViewById(R.id.iv_incoming_movie); tvTitle = (TextView) view.findViewById(R.id.tv_incoming_title); tvType = (TextView) view.findViewById(R.id.tv_incoming_movieType); tvDirector = (TextView) view.findViewById(R.id.tv_incoming_director); btForenotice = (Button) view.findViewById(R.id.bt_incoming_forenotice); } } private class ChildViewHolder { ImageView ivPic; TextView tvTitle; public ChildViewHolder(View view) { ivPic = (ImageView) view.findViewById(R.id.pic); tvTitle = (TextView) view.findViewById(R.id.title); } } @Override public int getGroupCount() { return list.size(); } @Override public int getChildrenCount(int groupPosition) { return list.get(groupPosition).videos.size(); } @Override public Object getGroup(int groupPosition) { return list.get(groupPosition); } @Override public Object getChild(int groupPosition, int childPosition) { return list.get(groupPosition).videos.get(childPosition); } @Override public long getGroupId(int groupPosition) { return groupPosition; } @Override public long getChildId(int groupPosition, int childPosition) { return childPosition; } @Override public boolean hasStableIds() { return false; } @Override public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { if (convertView == null) { convertView = inflater.inflate(R.layout.item_incoming_movies, null); ViewHolder holder = new ViewHolder(convertView); convertView.setTag(holder); } ViewHolder holder = (ViewHolder) convertView.getTag(); IncomingBean bean = list.get(groupPosition); if (bean.isDay) { holder.tvDay.setText(bean.day); holder.tvDay.setVisibility(View.VISIBLE); } else { holder.tvDay.setVisibility(View.GONE); } if (bean.isMonth) { holder.tvMonth.setText(bean.month + "月"); holder.tvMonth.setVisibility(View.VISIBLE); holder.vLine.setVisibility(View.VISIBLE); } else { holder.tvMonth.setVisibility(View.GONE); holder.vLine.setVisibility(View.GONE); } holder.tvTitle.setText(bean.title); StringBuilder sb = new StringBuilder(); if (bean.wantedCount > 0) { sb.append(bean.wantedCount).append("人想看-"); } sb.append(bean.type); holder.tvType.setText(sb.toString()); holder.tvDirector.setText("导演:" + bean.director); holder.btForenotice.setEnabled(bean.isVideo); holder.ivPic.setTag(bean.image);// 防止错位 MyVolley.getImageLoader().get(bean.image, ImageLoader.getImageListener(holder.ivPic, R.drawable.defaultposter_local, 0)); return convertView; } @Override public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { if (convertView == null) { convertView = inflater.inflate(R.layout.item_movies_child, null); ChildViewHolder holder = new ChildViewHolder(convertView); convertView.setTag(holder); } ChildViewHolder holder = (ChildViewHolder) convertView.getTag(); VideoBean bean = list.get(groupPosition).videos.get(childPosition); holder.tvTitle.setText(bean.title); holder.ivPic.setTag(bean.image);// 防止错位 MyVolley.getImageLoader().get(bean.image, ImageLoader.getImageListener(holder.ivPic, R.drawable.defaultposter_local, 0)); return convertView; } /**ExpandableListView 如果子条目需要响应click事件,必需返回true*/ @Override public boolean isChildSelectable(int groupPosition, int childPosition) { return true; } }
listView.setOnChildClickListener(new OnChildClickListener() { @Override public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) { Intent intent = new Intent(getActivity(), PlayActivity.class); intent.setData(Uri.parse(adapter.getList().get(groupPosition).videos.get(childPosition).url)); startActivity(intent); return true; } });
相关文章推荐
- Android_ExpandableListView_子item响应点击事件
- Android ExpandableListView 子item点击事件 注意事项
- Android小记:ListView中的按钮点击响应事件
- android 自定义listview无法响应点击事件OnItemClickListener的原因
- android Expandablelistview的子item点击没有效果
- android listviewListview中的button点击事件或者是onitemclick不响应的问题
- Android 禁止ExpandableListView组的点击展开或隐藏事件,让所有列表都展开
- Android TV开发:使用RecycleView实现横向的Listview并响应点击事件的代码
- Android下listview每个Item中包含有按钮,为什么在点击某一行按钮的时候,同时有多行button触发了响应事件?
- android 自定义listview无法响应点击事件OnItemClickListener的原因
- Android中ListView响应Item内部点击事件
- android 自定义listview无法响应点击事件OnItemClickListener
- [Android] ExpandableListView 子目录点击不响应,解决
- android 点击button 弹出一个listview并且响应单击事件
- Android listView 每行多个Button 响应点击事件
- android中点击CheckBox时无法响应ListView的Item的点击事件
- Android中ListView的item不能响应点击事件的原因
- android 自定义listview无法响应点击事件OnItemClickListener
- Android listView 中响应Button点击事件
- Android PullToRefreshExpandableListView的点击事件