gpt4 book ai didi

android - 深入访问自定义数组适配器中的 View

转载 作者:行者123 更新时间:2023-11-29 22:27:49 25 4
gpt4 key购买 nike

    lv = getListView();
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView adapterview, View view,
int position, long id) {
doSomething();
}
});

这是我主要 Activity 的代码。我做了一个自定义 ListView ,当然,也自定义了 ArrayAdapter。在 ListView 的每一行中我都有一个进度条,我在 ArrayAdapter 中的 getView() 方法中设置了进度条 View 。这是我的 ArrayAdapter

@Override
public View getView(int position, View convertView, ViewGroup parent) {
ProgressBar bar = (ProgressBar)convertView.findViewById(R.id.progressbar);
}
private void updateProgressBar(){
//blah blah
}

所以我的问题是:当我通过单击主 Activity 中的一行 ListView 来执行 doSomething() 方法时,它会触发 中的 updateProgressBar() 方法>ArrayAdapter 类并更新该行中的进度条 View 。所以想象一下,如果我单击三行,那么每行的三个进度条将开始运行。我怎样才能做到这一点?

最佳答案

好吧,您可以使用适配器获取项目并激活特定项目的progressbar,或者您可以为每个项目添加一个clicklistener创建时的行并在 getview()

中更新它

希望对你有帮助


例如,假设 lv 是一个 ListView 并且假设您的 ProgressBar不可见的 而您只是当有人点击该项目时使其可见

lv.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
doSomething(view, yourListArray.get(position), position);
}
});
private void doSomething(View view, YourItem item, int position){
((ProgressBar)view.findViewById(R.id.list_progress)).setVisibility(View.VISIBLE);
//do whatever you want here, you have the item, the view and even the position in case you need something
//else, in fact this maybe should be a thread so whenever you finish doing whatever you want, in the
//handler of the thread you make the ProgressBar invisible again
}

希望对你有帮助

关于android - 深入访问自定义数组适配器中的 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5344910/

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