gpt4 book ai didi

android - 如何使用SimpleAdapter.ViewBinder?

转载 作者:太空狗 更新时间:2023-10-29 16:07:40 26 4
gpt4 key购买 nike

我有一个布局复杂的列表 R.layout.menu_row。它由一个 ProgressBar 和一个文本字段组成。我使用的适配器:

   SimpleAdapter simpleAdapter = new SimpleAdapter(this, getData(path),
R.layout.menu_row, new String[] { "title", "progress" },
new int[] { R.id.text1,R.id.progressBar1});

适配器知道如何自行处理 TextViews 而不是 ProgressBars,所以我写了一个复杂的数据绑定(bind)器:

    SimpleAdapter.ViewBinder viewBinder = new SimpleAdapter.ViewBinder() {
@Override
public boolean setViewValue(View view, Object data, String textRepresentation) {
//here goes the code
if () {
return true;
}
return false;
}

现在我无法在函数内部填充映射。我需要将字符串 progress 的值设置为 ProgressBarsetProgress 方法。但是我没有得到字符串 progressProgressBar 的句柄。

最佳答案

您需要找出 ViewBinder 是否为 ProgressBar 调用并设置其进度(来自 data 参数(来自列 progress 在你的情况下)):

SimpleAdapter.ViewBinder viewBinder = new SimpleAdapter.ViewBinder() {
@Override
public boolean setViewValue(View view, Object data, String textRepresentation) {
if (view.getId() == R.id.progressBar1) {
// we are dealing with the ProgressBar so set the progress and return true(to let the adapter know you binded the data)
// set the progress(the data parameter, I don't know what you actually store in the progress column(integer, string etc)).
return true;
}
return false; // we are dealing with the TextView so return false and let the adapter bind the data
}

编辑:我在您的 addItem 方法中看到您这样做:

temp.put("progress", name);// Why do you set again the name as progress?!?

我认为你应该在这里设置的是progress参数:

temp.put("progress", progress);

然后在 ViewBinder 中:

if (view.getId() == R.id.progressBar1) {
Integer theProgress = (Integer) data;
((ProgressBar)view).setProgress(theProgress);
return true;
}

关于android - 如何使用SimpleAdapter.ViewBinder?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10396345/

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