gpt4 book ai didi

android - findViewById 更改 for 循环中的所有出现

转载 作者:行者123 更新时间:2023-11-29 02:37:42 25 4
gpt4 key购买 nike

我有以下方法将 View Views 添加到 LinearLayout,并且为每个 View 在 ProgressBar 上设置一个进度:

private void showProgress(LinearLayout recentLayout) {
recentLayout.removeAllViews();
for (MyItem mItem : items) {
final View view = LayoutInflater.from(getContext()).inflate(R.layout.listview_content, recentLayout, false);
final ProgressBar progressBar = view.findViewById(R.id.listview_content_progress);

// [...] simplifying a lot

// mItem.getProgress().progess --> float between 0 and 1
progressBar.setProgress((int) (mItem.getProgress().progess * 100));

recentLayout.addView(view);
}
}

但是执行此代码后,布局中的每个进度条 都设置了相同的进度(详细地说,是最后一个元素的进度)。

我错过了什么?对我来说,似乎每个进度条的进度都是单独设置的,而不是在最后一次设置。

编辑

我不知道这是否可能是因为我使用了通过 xml 绘制的自定义进度。我必须手动改变它吗?

最佳答案

如果您使用 drawable 作为 progressBar 的“背景”。这是个问题。

所有进度条都具有与背景(或进度状态)相同的可绘制对象。当您将进度状态设置为其中之一时,它会更改 drawable,并应用于所有进度条。

这是一个“常见”问题。

我在 Horocope 应用程序中遇到过它。只有 3 个进度条,所以我用不好的方式完成了 :D

progressBar.setProgressDrawable(ContextCompat.getDrawable(getActivity(),R.drawable.love_progressbar));
progressBar2.setProgressDrawable(ContextCompat.getDrawable(getActivity(),R.drawable.job_progressbar));
progressBar3.setProgressDrawable(ContextCompat.getDrawable(getActivity(),R.drawable.health_progressbar));

progressBar.setProgress(love);
progressBar2.setProgress(job);
progressBar3.setProgress(health);

关于android - findViewById 更改 for 循环中的所有出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46105764/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com