今天就跟大家聊聊有关Android中怎么实现部分布局监听ListView,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
android listview 部分布局监听,很多人会想,直接在适配器里面,拿到那个布局,添加点击事件就可以了,不过我会告诉你的是这时候position是错乱的,是无法根据用户点击的位置来对每个item进行相应的逻辑操作。 同事给我想到的一个办法是:给每个布局提前设置一个tag,也就是绑定对应需要设置的数据,在点击事件的时候,会有一个view,根据该view重新拿到这个tag,取得里面的数据,就可以了,防止错乱的问题,成功解决,大概的代码如下,因为加密的需要,很多代码省略:
// 适配器
public class OrAdapter extends BaseAdapter {
@Override
public int getCount() {
return dataMap.size();
}
@Override
public Object getItem(int position) {
return position;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder = null;
if (convertView == null) {
viewHolder = new ViewHolder();
convertView = getActivity().getLayoutInflater().inflate(
R.layout.activity_order_item, null);
initViewHolder(convertView, viewHolder, position);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
refreshViewHolder(position, viewHolder);
return convertView;
}
private String getTag(String orderId, String instrument) {
StringBuilder sb = new StringBuilder();
sb.append(orderId).append(";").append(instrument);
return sb.toString();
}
private void refreshViewHolder(int position, ViewHolder viewHolder) {
// ------------------为了防止item被复用------------------
viewHolder.modeifyorder.setTag(getTag(orderid, instrument));
}
private void initViewHolder(View convertView, ViewHolder viewHolder,
final int position) {
viewHolder.modeifyorder = (RelativeLayout) convertView
.findViewById(R.id.modeifyorder);
viewHolder.modeifyorder.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
int isman = (Integer) dataMap.get(position).get("ismanual");
int isprice = (Integer) dataMap.get(position).get(
"ispricereached");
String tag = v.getTag().toString();
String tagVec[] = tag.split(";");
long orderId = Long.parseLong(tagVec[0]);
String instStr = tagVec[1];
}
});
convertView.setTag(viewHolder);
}
private class ViewHolder {
TextView orderid;
RelativeLayout modeifyorder;
}
}
看完上述内容,你们对Android中怎么实现部分布局监听ListView有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注亿速云行业资讯频道,感谢大家的支持。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。