のグリッドビューで画像をロード中に進行状況バーを表示する方法は、私はURLを打つと、そこからXMLファイルがあります。 xmlファイルには、さまざまな画像のURLが含まれています。私はこれらの値を解析し、配列リストに格納しています。そのリストから画像がグリッド表示されます。このプロセスが開始されると、Webサービスから画像をロードする際に黒い画面が表示されることがあります。その場合、私は進捗バーを表示したいと思います。続き私のアプリでは、アクティビティが開始されたときにアンドロイドアプリ
は私がクラッシュしたばかりプログレスバー
class Image extends AsyncTask<Void, Void, Void>
{
ProgressDialog dialog = new ProgressDialog(ProfileImages.this);
protected void onPreExecute()
{
dialog.setMessage("Please wait...");
dialog.setIndeterminate(true);
dialog.show();
}
protected void onPostExecute(Void unused)
{
i.setImageBitmap(bm);
dialog.dismiss();
}
@Override
protected Void doInBackground(Void... params)
{
parsing();
grid.setAdapter(new ImageAdapter(this));
return null;
}
}
しかし、私のアプリを表示するために私のコードです。解析関数はうまくいっていますが、到達すると
grid.setAdapter(new ImageAdapter(this));
public View getView(final int position, View convertView,ViewGroup parent)
{
ImageView i = new ImageView(this.myContext);
if (convertView == null)
{
i = new ImageView(myContext);
i.setLayoutParams(new GridView.LayoutParams(105, 105));
i.setScaleType(ImageView.ScaleType.CENTER_CROP);
i.setPadding(8, 8, 8, 8);
i.setOnClickListener(new View.OnClickListener()
{
public void onClick(View view)
{
dialog = new ProgressDialog(ProfileGridView.this);
dialog.setMessage("Please wait...");
dialog.setIndeterminate(true);
dialog.show();
new Thread()
{
public void run()
{
try
{
Thread.sleep(300);
}
catch (InterruptedException e)
{
e.printStackTrace();
}
Bundle bundle = new Bundle();
bundle.putInt("key1",position);
Appconstant.showLog("position clicked "+position);
Intent myIntent = new Intent(getBaseContext(),ProfileImages.class);
myIntent.putExtras(bundle);
startActivityForResult(myIntent, 0);
dialog.dismiss();
}
}.start();
}
});
}
else
{
i = (ImageView) convertView;
}
try
{
URL aURL = new URL(myRemoteImages[position]);
Appconstant.showLog("Grid View URL " + aURL);
URLConnection conn = aURL.openConnection();
conn.connect();
InputStream is = conn.getInputStream();
BufferedInputStream bis = new BufferedInputStream(is);
Bitmap bm = BitmapFactory.decodeStream(bis);
bis.close();
is.close();
i.setImageBitmap(bm);
}
catch (IOException e)
{
Appconstant.showErrorLog("DEBUGTAG Remtoe Image Exception" + e);
}
return i;
}
public float getScale(boolean focused, int offset)
{
return Math.max(0, 1.0f/(float) Math.pow(2, Math.abs(offset)));
}
}
クラッシュします。これを行うにはどのように、私は
ポストlogcat – Egor
Uncaughthandlerてください:doInBackgroundの実行中にエラーが発生したスレッドAsyncTask#1出duetouncaughtexception () atjava.util.concurrent.FutureTask $ Sync.innerSetException(FutureTask.java:273)java.utilので 。コンテナ.FutureTask.setException(FutureTask.java:124) at java.util.concurrent.FutureTask $ Sync.innerRun(FutureTask.java:307) at java.util.concurrent.FutureTask.run(FutureTask.java:137) (ThreadPoolExecutor.java:1068) のjava.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1068) のjava.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:561) のjava.lang.Thread.run(スレッド。ジャva:1096) –
doInBackground()のiとbmは何ですか?全体の方法は奇妙に見える – Egor