加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 创业 > C语言 > 正文

Android开发实现ListView部分布局监听的方法

发布时间:2020-12-15 01:03:26 所属栏目:C语言 来源:网络整理
导读:本篇章节讲解Android开发实现ListView部分布局监听的方法。供大家参考研究具体如下: android listview 部分布局监听,很多人会想,直接在适配器里面,拿到那个布局,添加点击事件就可以了,不过我会告诉你的是这时候position是错乱的,是无法根据

本篇章节讲解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相关内容感兴趣的读者可查看本站专题:《Android控件用法总结》、《Android开发入门与进阶教程》、《Android视图View技巧总结》、《Android编程之activity操作技巧总结》、《Android数据库操作技巧总结》及《Android资源操作技巧汇总》

希望本文所述对大家Android程序设计有所帮助。

您可能感兴趣的文章:

  • android动态布局之动态加入TextView和ListView的方法
  • Android中ListView Item布局优化技巧
  • Android App界面的ListView布局实战演练
  • Android实现的ListView分组布局改进示例
  • Android ListView自动显示隐藏布局的实现方法
  • Android ListView添加头布局和脚布局实例详解
  • Android自定义listview布局实现上拉加载下拉刷新功能
  • Android Listview中显示不同的视图布局详解及实例代码
  • Android ListView监听滑动事件的方法(详解)
  • Android ListView里控件添加监听方法的实例详解

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读