You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MP LineChart在ExpandableHeightListView中超过5项后尺寸丢失问题求助

问题修复方案

核心根因

代码里有两处致命逻辑错误,加上嵌套滚动场景的测量冲突共同导致了图表尺寸异常:

  1. 你将ViewHolder声明为了适配器的全局成员变量,所有列表项共用同一个ViewHolder实例,当条目数超过ListView默认缓存阈值(通常为5)后,后续条目的ViewHolder会覆盖前面条目的引用,导致前序条目图表配置错乱。
  2. LineDataSet被声明为static静态变量,所有条目共享同一个数据集实例,后续条目的数据修改会覆盖所有前面条目的数据集配置。
  3. MPAndroidChart设置数据后没有主动触发刷新,无法重新测量绘制正确尺寸。
  4. 列表项中的LineChart如果使用wrap_content高度,在ScrollView嵌套ListView的场景下测量逻辑冲突,无法获取正确高度。
  5. 自定义的ExpandableHeightListView没有主动开启展开模式。

具体修改步骤

1. 修复ViewHolder全局声明问题

删掉适配器中全局的ViewHolder声明,将其改为getView方法内的局部变量:

// 删除这行全局声明
// private ViewHolder holder;

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    ViewHolder holder; // 改为方法内局部变量
    if (convertView == null) {
        convertView = mInflater.inflate(R.layout.most_active_stocks_listitem, null);
        holder = new ViewHolder();
        holder.moverSymbolName = (TextView) convertView.findViewById(R.id.moversymbolName);
        // 其余找控件的代码保持不变
        convertView.setTag(holder);
    } else {
        holder = (ViewHolder) convertView.getTag();
    }
    // 后续逻辑保持不变
}

2. 移除LineDataSet的static修饰

// 把static删掉
private LineDataSet set1;

也可以直接把set1变量放到setData方法内作为局部变量使用,无需声明为类成员。

3. 给LineChart添加刷新逻辑

在setData方法末尾给LineChart设置完数据后,添加两行刷新代码:

holder.masLineChart.setData(data);
// 新增以下两行
holder.masLineChart.notifyDataSetChanged();
holder.masLineChart.invalidate();

4. 给LineChart设置固定高度

修改列表项布局most_active_stocks_listitem.xml中LineChart的高度配置,不要用wrap_content,设置为固定dp值:

<com.github.mikephil.charting.charts.LineChart
    android:id="@+id/moversgraph"
    android:layout_width="match_parent"
    android:layout_height="120dp" />

可根据实际需求调整高度数值。

5. 开启ListView的展开模式

在Fragment中初始化ListView的代码里,主动调用setExpanded方法开启展开:

ExpandableHeightListView moverList = view.findViewById(R.id.moverlist);
moverList.setExpanded(true);
// 设置适配器之后额外调用一次请求布局
moverList.setAdapter(adapter);
moverList.requestLayout();

内容的提问来源于stack exchange,提问作者AYESHA SIDDIQUI

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 09:36:03