gpt4 book ai didi

android - 异步任务下载图像然后将图像加载到水平画廊

转载 作者:行者123 更新时间:2023-11-30 03:51:40 24 4
gpt4 key购买 nike

我正在使用 asynctask 下载图片,下载完成后,它应该将图片加载到我的水平图库中。是否可以?

现在我已经尝试过了,但它总是崩溃:

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

new downloadFile().execute();
gallery = (Gallery) findViewById(R.id.examplegallery);
gallery.setAdapter(new AddImgAdp(this));

gallery.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView parent, View v, int position, long id) {
// Displaying the position when the gallery item in clicked
Toast.makeText(MainActivity.this, "Position=" + position, Toast.LENGTH_SHORT).show();
}
});

}

/**
* Background Async Task to Load all product by making HTTP Request
* */
class downloadFile extends AsyncTask<String, String, String> {

/**
* getting all magazines from url
* */
protected String doInBackground(String... args) {
URL myFileUrl = null;

// Building Parameters
List<NameValuePair> params = new ArrayList<NameValuePair>();
// getting JSON string from URL
JSONObject json = jParser.makeHttpRequest(url_login, "GET", params);

// Check your log cat for JSON reponse
Log.d("All Products: ", json.toString());

try {
// Checking for SUCCESS TAG
int success = json.getInt(TAG_SUCCESS);

if (success == 1) {
// products found
// Getting Array of Products
mag = json.getJSONArray(TAG_MAGAZINE);

for (int i = 0; i < mag.length(); i++) {
JSONObject c = mag.getJSONObject(i);

// Storing each json item in variable
String magLink = c.getString(TAG_MAGAZINE_URL);
String magThumb = c.getString(TAG_MAGAZINE_THUMBNAIL);
//String magazineIssue = c.getString(TAG_MAGAZINE_ISSUE);

urlList.add(magLink);
//urlList.add(magazineIssue);
thumbnailList.add(magThumb);

System.out.println(thumbnailList);
}
}
else {

}
} catch (JSONException e) {
e.printStackTrace();
}


for (int i = 0; i < thumbnailList.size(); i ++)
{
thumbnail = thumbnailList.get(i).toString();
Log.d("thumbnail", thumbnail);
number = i;
try {
myFileUrl = new URL(thumbnail); // RETRIEVE IMAGE URL
}
catch (MalformedURLException e) {
e.printStackTrace();
}
try {
HttpURLConnection conn = (HttpURLConnection) myFileUrl.openConnection();
conn.setDoInput(true);
conn.connect();
InputStream in = conn.getInputStream();
Log.i("im connected", "Download");
bmImg = BitmapFactory.decodeStream(in);

File filename;
try {
// GET EXTERNAL STORAGE, SAVE FILE THERE
File storagePath = new File(Environment.getExternalStorageDirectory(),"Covers");
storagePath.mkdirs();

filename = new File(storagePath + "/photo"+number+".jpg");
FileOutputStream out = new FileOutputStream(filename);
bmImg.compress(Bitmap.CompressFormat.JPEG, 90, out);

out.flush();
out.close();
MediaStore.Images.Media.insertImage(getContentResolver(),filename.getAbsolutePath(), filename.getName(),
filename.getName());



// displayImage();
} catch (Exception e) {
e.printStackTrace();
}



} catch (IOException e) {
e.printStackTrace();
}

}

return null;
}

/**
* After completing background task Dismiss the progress dialog
* **/
protected void onPostExecute() {

runOnUiThread(new Runnable() {
public void run() {

ArrayList<String> mStringList= new ArrayList<String>();
File strPath = new File(Environment.getExternalStorageDirectory() + "/Covers");
int lists = strPath.listFiles().length;
Log.d("number of items in array ",String.valueOf(lists));

File yourDir = new File(strPath, "");
for (File f : yourDir.listFiles()) {
if (f.isFile())
{
String name = f.getName();
String v = strPath + "/" + name;
mStringList.add(v);
}
}

mImageIds = new String[mStringList.size()];
mImageIds = mStringList.toArray(mImageIds);

for(int a = 0; a < mImageIds.length ; a++){
Log.d("string is",(mImageIds[a]));
}


}



});
}
}

public class AddImgAdp extends BaseAdapter {
int GalItemBg;
private Context cont;

public AddImgAdp(Context c) {
cont = c;
TypedArray typArray = obtainStyledAttributes(R.styleable.GalleryTheme);
GalItemBg = typArray.getResourceId(R.styleable.GalleryTheme_android_galleryItemBackground, 0);
typArray.recycle();
}
public int getCount() {
return mImageIds.length;
}

public Object getItem(int position) {
return position;
}

public long getItemId(int position) {
return position;
}

public View getView(int position, View convertView, ViewGroup parent) {
ImageView imgView = new ImageView((Context) cont);

imgView.setImageDrawable(Drawable.createFromPath(mImageIds[position]));

// Fixing width & height for image to display
imgView.setLayoutParams(new Gallery.LayoutParams(80, 70));
imgView.setScaleType(ImageView.ScaleType.FIT_XY);
imgView.setBackgroundResource(GalItemBg);

return imgView;
}
}

}

这是我的 logcat 输出:

12-28 12:08:10.510: E/AndroidRuntime(5567): FATAL EXCEPTION: main
12-28 12:08:10.510: E/AndroidRuntime(5567): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.horizontalviewing/com.example.horizontalviewing.MainActivity}: java.lang.NullPointerException
12-28 12:08:10.510: E/AndroidRuntime(5567): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1978)
12-28 12:08:10.510: E/AndroidRuntime(5567): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2003)
12-28 12:08:10.510: E/AndroidRuntime(5567): at android.app.ActivityThread.access$600(ActivityThread.java:123)
12-28 12:08:10.510: E/AndroidRuntime(5567): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1169)
12-28 12:08:10.510: E/AndroidRuntime(5567): at android.os.Handler.dispatchMessage(Handler.java:99)
12-28 12:08:10.510: E/AndroidRuntime(5567): at android.os.Looper.loop(Looper.java:137)
12-28 12:08:10.510: E/AndroidRuntime(5567): at android.app.ActivityThread.main(ActivityThread.java:4446)
12-28 12:08:10.510: E/AndroidRuntime(5567): at java.lang.reflect.Method.invokeNative(Native Method)
12-28 12:08:10.510: E/AndroidRuntime(5567): at java.lang.reflect.Method.invoke(Method.java:511)
12-28 12:08:10.510: E/AndroidRuntime(5567): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
12-28 12:08:10.510: E/AndroidRuntime(5567): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
12-28 12:08:10.510: E/AndroidRuntime(5567): at dalvik.system.NativeStart.main(Native Method)
12-28 12:08:10.510: E/AndroidRuntime(5567): Caused by: java.lang.NullPointerException
12-28 12:08:10.510: E/AndroidRuntime(5567): at com.example.horizontalviewing.MainActivity$AddImgAdp.getCount(MainActivity.java:247)
12-28 12:08:10.510: E/AndroidRuntime(5567): at android.widget.AbsSpinner.setAdapter(AbsSpinner.java:113)
12-28 12:08:10.510: E/AndroidRuntime(5567): at com.example.horizontalviewing.MainActivity.onCreate(MainActivity.java:69)
12-28 12:08:10.510: E/AndroidRuntime(5567): at android.app.Activity.performCreate(Activity.java:4465)
12-28 12:08:10.510: E/AndroidRuntime(5567): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
12-28 12:08:10.510: E/AndroidRuntime(5567): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1942)
12-28 12:08:10.510: E/AndroidRuntime(5567): ... 11 more

最佳答案

getCount 方法中有一个空指针异常,因为您在执行后初始化之前初始化了适配器,要么将适配器创建移动到执行后代码中,要么首先初始化数组 mImageIds。

关于android - 异步任务下载图像然后将图像加载到水平画廊,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14064607/

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