listview单选开关设置,listview单击事件无响应
来源:互联网 发布:淘宝五星好评怎么截图 编辑:程序博客网 时间:2024/05/16 10:30
listview中单机某一项实现单选,传递脚标,更新UI的状态。
adapter.notifyDataSetInvalidated(): 更新界面UI 只是界面变化用这个即可
adapter.notifyDataSetChanged(); 更新界面UI和数据变化,
item中要用imageView 设为单选按钮。
item中最好不用 imageButton设为单选按钮会和listview单机事件冲突,导致单机效过较差
android:descendantFocusability="blocksDescendants" (listview点击事件不响应)
属性的值有三种:
beforeDescendants:viewgroup会优先其子类控件而获取到焦点
afterDescendants:viewgroup只有当其子类控件不需要获取焦点时才获取焦点
blocksDescendants:viewgroup会覆盖子类控件而直接获得焦点
通常我们用到的是第三种,即在Item布局的根布局加上android:descendantFocusability=”blocksDescendants”的属性就好了
/**
* 适配器中的代码示例*
*/
public class ShiooingadressAdapter extends MBaseAdapter<MiaoshaAdressBean> {
private AdapterCallback callBack;
private boolean flagAdapter = false;
private int currentPosition = 0;
public ShiooingadressAdapter(Context context) {
super(context);
}
public void setAdapterCallback(AdapterCallback callBack) {
this.callBack = callBack;
}
// 传进来单机值,设置单机脚标
public void setCheckPosition(int position) {
currentPosition = position;
notifyDataSetInvalidated();// 更新UI,数据没有改变不需要调用接口,就用这个刷新
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
if (convertView == null) {
holder = new ViewHolder();
convertView = LayoutInflater.from(context).inflate(
R.layout.miaosha_address_item2, null);
holder.imageButton1 = (ImageView) convertView
.findViewById(R.id.imageButton1);
holder.tvAdress2 = (TextView) convertView
.findViewById(R.id.textview_address);
holder.imageButton2 = (ImageButton) convertView
.findViewById(R.id.imageButton2);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.reset();// 给每一个item设置默认图片和字体颜色
final MiaoshaAdressBean bean = getItem(position);
final String id = bean.getId();
String address = bean.getAddress();
String name = bean.getName();
String phone = bean.getPhone();
StringBuilder builder = new StringBuilder();
builder.append(address).append(" " + name).append(" " + phone);
holder.tvAdress2.setText(builder + "");
holder.imageButton2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
callBack.callBack(v, bean, position);
}
});
/// 如果单机lsitview的脚标和当前填充脚标相等的话,imageview改为选中图片,字体颜色改为蓝色
if (currentPosition == position) {holder.imageButton1.setImageResource(R.drawable.miaosha_dian_s);
holder.tvAdress2.setTextColor(context.getResources().getColor(
color.textblue));
}
return convertView;
}
class ViewHolder {
private ImageView imageButton1;
private TextView tvAdress2;
private ImageButton imageButton2;
/// holder中设置未选中的默认图片和默认颜色 ,在填充ui之前,都设置每个item的默认图片
public void reset() {
imageButton1.setImageResource(R.drawable.miaosha_dian);
tvAdress2.setTextColor(color.text_gray_light);
}
}
public interface AdapterCallback {
void callBack(View view, MiaoshaAdressBean bean, int position);
}
}
Activity中的listview单机事件,调用adapter中封装的方法,传递过去当前的position,判断是否相等,如果相等在填充UI的时候改变为选中状态
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
mId = position;
adapter.setCheckPosition(position);// 单机lsitview的某一项,将脚标传进去
imgBtn.setImageResource(R.drawable.miaosha_dian);
visibleGone.setVisibility(View.GONE);
tvAddress.setTextColor(mContext.getResources().getColor(
R.color.text_gray_light));
}
});
- listview单选开关设置,listview单击事件无响应
- ListView的Item单击无响应
- listview 点击事件无响应
- listview点击事件无响应
- android ListView无法响应单击事件
- Android ListView onitemclick事件无响应
- ListView setOnItemClickListener 事件无响应的解决办法
- ListView的Item点击事件无响应
- android listview单击事件
- listview 单击事件
- listview 单击事件 .
- android listview单击事件
- listview 单击事件总结
- 设置Listview单选
- android listView 控件单击事件
- ListView响应双击事件
- listView 无法响应事件
- 自定义的ListView 点击事件无响应解决办法
- jsp九个隐式对象
- 统治世界的十大算法
- upper_bound,lower_bound,eaual_bound,equal_range二分搜索
- 日志分析方法概述
- MySQL在大型网站的应用架构演变
- listview单选开关设置,listview单击事件无响应
- Stom概念
- Asp.net之Windows身份认证以及IIS7.0部署
- linux 同步IO: sync、fsync与fdatasync
- linux下 乱码文件更名
- 正确的使用dd进行磁盘读写速度测试
- 公交线路查询接口
- 分布式服务框架 Zookeeper -- 管理分布式环境中的数据
- zookeeper 运维管理