国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android開發實現ListView部分布局監聽的方法

2019-10-22 18:16:47
字體:
來源:轉載
供稿:網友

本文實例講述了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開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 安阳市| 黎川县| 龙南县| 叶城县| 房山区| 孝昌县| 康乐县| 渭南市| 和平县| 高唐县| 高阳县| 江山市| 石台县| 乌拉特中旗| 卓尼县| 镇雄县| 石阡县| 兴山县| 泰和县| 淳化县| 富裕县| 拜城县| 兴隆县| 巴马| 秭归县| 盖州市| 长武县| 六枝特区| 阿图什市| 长泰县| 禹州市| 宝丰县| 开原市| 宝应县| 扶沟县| 扬中市| 罗源县| 汕尾市| 东兴市| 普定县| 罗甸县|