静水流深—j 2016-09-07 11:11 采纳率: 100%
浏览 2874
已采纳

Android ExpandableListView点击列表项改变列表项内组件产生混乱的问题

//ExpandableListView的适配器
@Override
public View getGroupView(int groupPosition, boolean isExpanded,
View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
GroupViewHolder gvholder;
if (convertView == null) {
gvholder = new GroupViewHolder();
convertView = LinearLayout.inflate(getBaseContext(),
R.layout.group_layout, null);
gvholder.groupcity = (TextView) convertView
.findViewById(R.id.group_title);
gvholder.groupsize = (TextView) convertView
.findViewById(R.id.groupcap);
gvholder.groupload = (ImageView) convertView
.findViewById(R.id.group_state);
convertView.setTag(gvholder);
} else {
gvholder = (GroupViewHolder) convertView.getTag();
}

// ExpandableListView 的OnGroupClick监听
allcitylists.setOnGroupClickListener(new OnGroupClickListener() {

        @Override
        public boolean onGroupClick(ExpandableListView parent, View v,
                int groupPosition, long id) {
            // TODO Auto-generated method stub
            group_checked[groupPosition] = group_checked[groupPosition] + 1;

            ((BaseExpandableListAdapter) expadapter).notifyDataSetChanged();
            if (groupPosition < 5
                    || groupPosition >= provincelist.size() - 3) {
                ArrayList<MKOLSearchRecord> records = mOffline
                        .searchCity(provincelist.get(groupPosition).get(0));

                if (records != null && records.size() == 1) {
                    cityid =

                    records.get(0).cityID;

                    mOffline.start(cityid);

                    updateView();

                //改变的组件
                    TextView loadtext = (TextView) v
                            .findViewById(R.id.group_loadtitle);
                    loadtext.setVisibility(View.VISIBLE);

                    changeloadtext(loadtext, cityid);

                }

            }
            return false;
        }
    });

    内容比较多,没贴完,但关键的地方都在上面,点击列表项能够把loadtext显示出来,但是上下滑动之后,显示的就不是我刚刚点击的那个列表项的TextView,而是其他列表项的Textview,应该是不能在这里用ViewHolder,但是我也想不出来怎么改变,请各位大神指教指教
  • 写回答

4条回答 默认 最新

  • haha我逗 2016-09-08 02:20
    关注

    回收机制,你上下滑动之后,最上面的item被回收了,你之前点击的那个group会被刷新,你得保存每个group被点击后的groupposition 和对应的cityid,在适配器刷新之后重新显示出来

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥50 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥200 uniapp长期运行卡死问题解决
  • ¥15 latex怎么处理论文引理引用参考文献
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?