بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
مشکل با برنامه ی ImageOptimization
سلام دوستان، من کدها رو تا اون قسمت که عکس ها دانلود میشن و داخل فایل temp ریخته میشن رو نوشتم ولی دوتا مشکل دارم : اول اینکه وقتی برنامه رو ران می کنم همون اولش روی امولیتورم لیست ویو نمایش داده نمیشه و باید back بزنم و دوباره برنامه رو باز کنم بعدش لیست ویو توی امولیتور نمایش داده میشه . دوم اینکه در امولیتور من 7 تا ایمیج جا میگیره که همون اولش هیچ کدوم از این 7 تا دانلود نمیشن و وقتی به سمت پایین اسکرول میکنم بقیه ی عکس ها از شماره 8 تا اخرش که 11 هست فقط دانلود میشن . مشکل کد من کجاست ؟؟ کد کلاس های مهم رو میزارم . ممنون
// Codes of G class:
package com.example.n5110.imageoptimization;
import android.app.Application;
import android.content.Context;
import android.os.Environment;
import android.os.Handler;
import java.io.File;
public class G extends Application {
public static Context context;
private static G instance;
public static String resultResponse;
public static final String DIR_SDCARD = Environment.getExternalStorageDirectory().getAbsolutePath();
public static final String DIR_APP = DIR_SDCARD + "/image-optimization";
public static final String DIR_TEMP = DIR_APP + "/temp";
public static final int DOWNLOAD_BUFFER_SIZE = 8 * 1024;
public static final Handler HANDLER = new Handler();
public static G getInstance() {
return instance;
}
@Override
public void onCreate() {
super.onCreate();
new File(DIR_APP).mkdirs();
new File(DIR_TEMP).mkdirs();
DownloadManager.initialize();
instance = this;
context = getApplicationContext();
}
}
// Codes of AdapterImage class:
package com.example.n5110.imageoptimization;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import java.util.ArrayList;
public class AdapterImage extends BaseAdapter {
private Context context;
private ArrayList<StructImage> data;
private LayoutInflater inflater;
public AdapterImage(Context context, ArrayList<StructImage> data) {
this.context = context;
this.data = data;
inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
public static class ViewHolder {
public ViewGroup layout_root;
public TextView txt_title;
public ImageView img_preview;
}
@Override
public int getCount() {
return data.size();
}
@Override
public Object getItem(int position) {
return position;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View vi = convertView;
ViewHolder holder = new ViewHolder();
if (vi==null) {
vi = inflater.inflate(R.layout.adapter_image, null);
holder.layout_root = (ViewGroup)vi.findViewById(R.id.layout_root);
holder.txt_title = (TextView)vi.findViewById(R.id.txt_title);
holder.img_preview = (ImageView)vi.findViewById(R.id.img_preview);
vi.setTag(holder);
} else {
holder = (ViewHolder) vi.getTag();
}
if (data.size() > 0){
StructImage tempValue = data.get(position);
holder.txt_title.setText(tempValue.getTitle());
// holder.img_preview.set
}
DownloadManager.addToDownloadList(data.get(position).getImageUrl());
return vi;
}
}
//Codes of ActivityStartup class:
package com.example.n5110.imageoptimization;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ListView;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.ArrayList;
public class ActivityStartup extends AppCompatActivity {
private OnDownloadCompleteListener listener;
public ListView list;
public AdapterImage adapter;
public ArrayList<StructImage> images = new ArrayList<StructImage>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
list = (ListView)findViewById(R.id.list);
adapter = new AdapterImage(this, images);
list.setAdapter(adapter);
getImageListFromServer();
}
private void getImageListFromServer(){
Webservice.readUrl(this, "http://192.168.1.33/file-server/service.php");
if (G.getInstance().resultResponse != null) {
try {
images.clear();
JSONArray tasks = new JSONArray(G.getInstance().resultResponse);
for (int i = 0; i < tasks.length(); i++) {
JSONObject object = tasks.getJSONObject(i);
images.add( new StructImage(object.getString("title"), object.getString("url")));
}
adapter.notifyDataSetChanged();
} catch (JSONException e) {
e.printStackTrace();
}
}
}
}
//Codes of DownloadManager class:
package com.example.n5110.imageoptimization;
import android.os.AsyncTask;
import android.util.Log;
import android.widget.Toast;
import java.util.ArrayList;
public class DownloadManager {
public static ArrayList<String> urls = new ArrayList<String>();
public static String myUrl;
public static OnDownloadCompleteListener downloadCompleteListener;
public static void initialize(){
downloadCompleteListener = new OnDownloadCompleteListener() {
@Override
public void onDownloadComplete(String url, String localPath) {
Log.i("LOG", "Image Download Complete, Original URL: " + url + ", Save Path: " + localPath);
}
};
}
public static void addToDownloadList(String url){
myUrl = url;
if (urls.contains(myUrl)){
return;
}
urls.add(myUrl);
new DownloadFile().execute();
}
static class DownloadFile extends AsyncTask<Void, Void, Void> {
@Override
protected Void doInBackground(Void... params) {
String localFileName = myUrl.replace("/images/", "/");
FileDownloader.download("http://192.168.1.33/file-server/" + myUrl, G.DIR_TEMP + localFileName, downloadCompleteListener);
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
Toast.makeText(G.context, "Finish", Toast.LENGTH_SHORT).show();
}
}
}
//Codes of FileDownloader class:
package com.example.n5110.imageoptimization;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
public class FileDownloader {
public static void download(final String downloadPath, final String filepath, final OnDownloadCompleteListener listener) {
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
try {
URL url = new URL(downloadPath);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setDoOutput(true);
connection.connect();
File file = new File(filepath);
if (file.exists()){
file.delete();
}
FileOutputStream outputStream = new FileOutputStream(filepath);
InputStream inputStream = connection.getInputStream();
byte[] buffer = new byte[G.DOWNLOAD_BUFFER_SIZE];
int len = 0;
while ((len = inputStream.read(buffer)) > 0){
outputStream.write(buffer, 0, len);
}
if (listener != null){
G.HANDLER.post(new Runnable() {
@Override
public void run() {
listener.onDownloadComplete(downloadPath, filepath);
}
});
}
outputStream.close();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
});
thread.start();
}
}
+1
0

کدها خیلی زیادن فک نکنم کسی بیاد بخونه، بهتره خودتون با کمک Logcat مشکل رو پیدا کنید. در ضمن بهتره به جای ImageOptimization از کتابخونه ی Picasso استفاده کنید. (8 سال پیش)
0
0

ممنون از پیشنهادتون (8 سال پیش)
برای این سوال پاسخی وجود ندارد.
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .