您的位置:首页 > 移动开发 > Android开发

android ExpandableListView 设置所有子条目单选

2017-02-10 17:29 519 查看
1.首先设置子条目可选:

childViewd的布局文件中

<LinearLayout
android:id="@+id/ll_item"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:orientation="horizontal"
android:clickable="true" //默认是不可点击 改为可以点击
>


2.设置条目监听事件 由ViewHolder来实现

@Override
public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
ChildViewHolder viewHolder;
if (convertView == null) {
convertView = View.inflate(mActivity, R.layout.item_learning_tasks_sub_tasks_child, null);
viewHolder = new ChildViewHolder(convertView);

viewHolder.ll_item_sub_task.setOnClickListener(viewHolder);   //可以被点击 由viewholder来监听

convertView.setTag(viewHolder);
} else {
viewHolder = (ChildViewHolder) convertView.getTag();
}
viewHolder.groupPosition = groupPosition;  //在viewholder中纪录当前的groupPosition
viewHolder.childPosition = childPosition;  //在viewholder中纪录当前的childPosition

if(selectedItem[0]==groupPosition&&selectedItem[1]==childPosition){  //判断当前条目是否被选中
viewHolder.ll_item_sub_task.setSelected(true);
}else{
viewHolder.ll_item_sub_task.setSelected(false);
}

return convertView;
}


3.viewHolder中来实现对条目点击的响应

class ChildViewHolder implements View.OnClickListener {
@Bind(R.id.ll_item_sub_task)
LinearLayout ll_item_sub_task;
@Bind(R.id.iv_item_sub_task)
ImageView iv_item_sub_task;
@Bind(R.id.tv_item_sub_task)
TextView tv_item_sub_task;

public int groupPosition;
public int childPosition;

public ChildViewHolder(View view)  {
ButterKnife.bind(this, view);
}

@Override
public void onClick(View v) {
selectedItem = new int[]{groupPosition,childPosition}; //将被选中的条目记录到adapter中
notifyDataSetChanged();  //刷新显示
}
}


public class SubAdapter extends BaseExpandableListAdapter {

private int[] selectedItem; //用于记录当前被选中的条目 记得在构造方法中初始化为{-1,-1}
}

完成

另外 在低版本(4.1)的手机上要设置点击效果,不然系统默认的点击效果太丑

在布局中加入:

android:listSelector="@color/light_grey"
即可

如果在低版本手机上在PopupWindow中嵌套使用ExpandableListView的话 记得给PopupWindows设置焦点 可能无法点击条目展开
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: