gpt4 book ai didi

android - 多个图像进度条加载就像在 Whats App 中一样

转载 作者:行者123 更新时间:2023-11-29 01:32:05 26 4
gpt4 key购买 nike

我想在上传或下载图片或视频时像 Whats App 一样显示多个进度条。并且完成的进度会隐藏进度条。

我尝试使用 Async Task 来做到这一点,但没有得到确切的解决方案,而且也曾被代表使用过。没有得到精确解。

这是我的代码

主要 Activity

public class MainActivity extends ActionBarActivity {

private ListView mListView;
private ArrayList<String> alst;
private int count = 0;
private MyAdapter adapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

mListView = (ListView) findViewById(R.id.listView1);
alst = new ArrayList<String>();

adapter = new MyAdapter(this, R.layout.activity_main, alst);

mListView.setAdapter(adapter);
}

public void onClick(View v) {
count++;
alst.add("" + count);
adapter.notifyDataSetChanged();
}
}

这是我的适配器

public class MyAdapter extends ArrayAdapter<String> {

private Context mContext;
public ViewHolder viewHolder;

public MyAdapter(Context context, int resource, List<String> objects) {
super(context, resource, objects);
mContext = context;
}

private class ViewHolder {
ProgressBar progressBar;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
viewHolder = null;
if (convertView == null) {

LayoutInflater inflater = (LayoutInflater) mContext
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

convertView = inflater.inflate(R.layout.adapter, parent, false);

viewHolder = new ViewHolder();
viewHolder.progressBar = (ProgressBar) convertView
.findViewById(R.id.progressBar1);

viewHolder.progressBar.getIndeterminateDrawable().setColorFilter(
mContext.getResources().getColor(R.color.actionBar),
android.graphics.PorterDuff.Mode.MULTIPLY);

viewHolder.progressBar.setVisibility(View.VISIBLE);

convertView.setTag(viewHolder);
}

viewHolder = (ViewHolder) convertView.getTag();

TextView textView = (TextView) convertView.findViewById(R.id.textView1);

textView.setText(getItem(position));
new DownloadAsyncTask().execute(viewHolder);
return convertView;
}

public class DownloadAsyncTask extends
AsyncTask<ViewHolder, Void, ViewHolder> {

@Override
protected ViewHolder doInBackground(ViewHolder... params) {
ViewHolder viewHolder = params[0];

for (int i = 0; i < 2500; i++) {
System.out.println(i);
}
return viewHolder;
}

@Override
protected void onPostExecute(ViewHolder result) {
result.progressBar.setVisibility(View.GONE);
}
}
}

这是进度

enter image description here

让我知道有值(value)的解决方案或者是否有任何图书馆对此有益

最佳答案

我不太确定您所说的“精确解”是什么意思,但是查看您的代码我发现您正在尝试从 AsyncTask 设置进度。但是,您只能从 UI 线程更新 View ,而不能直接从 AsyncTask 中更新 View ,AsyncTask 是一个单独的线程。

但是,Asynctask 提供了一种方法 publishProcess(),您可以使用它在 UI 线程上执行此类操作(例如调用更新进度条的函数),而您的 doInBackground 在单独的线程中工作。检查this example.

您可能需要一个接口(interface)来从 AsyncTask 调用主线程中的函数。希望这对您有所帮助!

关于android - 多个图像进度条加载就像在 Whats App 中一样,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30617243/

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