我是android編程的初學者,所以也許這是一個愚蠢的問題... 我讀了很多關於添加進度條的異步任務,但我找不到解決方案我需要:如何將進度條添加到gridview中
我必須顯示網格視圖,但我需要搜索圖像和文本的數據以顯示它。 因此,如果我加載數組中的相關數據在一個asynctask網格的適配器沒有數據和崩潰。 否則,如果我把進度對話框放在gridview的oncreate方法中,它會等待數據加載,但不會顯示progess欄(它只是在加載數據結束時,而不是在此期間)。 所以我不知道正確的做法。
我想開始與之前的活動只顯示進度對話框,裝載數據,並在年底開始在GridView,但它不是在我看來,經濟的方法...
你是什麼認爲?
所以:我怎樣才能從asynk任務將數據附加到適配器? 我試過notyfydatasetchange但它不起作用
在我的onCreate方法我有: mAdapter = new ImageAdapter(this); mGrid.setAdapter(mAdapter);
,但同一個適配器的構造需要數據...(人至少對象的數量...)
,這是我的適配器:
public class ImageAdapter extends BaseAdapter{
Context mContext;
public final int ACTIVITY_CREATE = dirObjList.size()*2;
public ImageAdapter(Context c){
mContext = c;
map = new HashMap<Integer,SoftReference<Bitmap>>();
}
public Map<Integer,SoftReference<Bitmap>> map;
@Override
public int getCount() {
return dirObjList.size();
}
public RowData getItem(int position) {
return dirObjList.get(position);
}
public long getItemId(int position) {
return position;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
RowData currDirObj= getItem(position);
if(convertView==null){
LayoutInflater li = getLayoutInflater();
convertView = li.inflate(R.layout.icon, null);
holder = new ViewHolder();
holder.tv = (TextView)convertView.findViewById(R.id.icon_text);
holder.iv = (ImageView)convertView.findViewById(R.id.icon_image);
convertView.setTag(holder);
}
else{
holder = (ViewHolder)convertView.getTag();
}
holder.iv=setThumbs(holder.iv,position);
holder.tv.setText(currDirObj.mTitle);
convertView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
SharedPreferences indexPrefs = getSharedPreferences("currentIndex",
MODE_PRIVATE);
SharedPreferences.Editor indexEditor = indexPrefs.edit();
indexEditor.putInt("currentIndex", 0);
SharedPreferences drPrefs = getSharedPreferences("currentDir",
MODE_PRIVATE);
SharedPreferences.Editor drPath = drPrefs.edit();
drPath.putString("currentDir", dirObjList.get(position).mDetail);
drPath.commit();
final Intent intent = new Intent(ImageGrid.this, SpeakinGallery.class);
startActivity(intent);
}
});
return convertView;
}
}
,這是我的任務異步
public class MyTask extends AsyncTask<Void, Void, String> {
ProgressDialog progress;
public MyTask(ProgressDialog progress) {
this.progress = progress;
}
public void onPreExecute() {
progress.show();
}
public String doInBackground(Void...unused) {
getSubDirs(startDIRECTORY);
return "foo";
}
public void onPostExecute(Void unused) {
progress.dismiss();
//mAdapter.notifyDataSetChanged();
}
}
什麼是您的AsyncTask是什麼樣子? –