آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
مشکل عدم دسترسی خریداران پیشین به برخی آموزش ها برطرف شد
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

مشکل با برنامه ی ImageOptimization

MarAnd  8 سال پیش  8 سال پیش
0 0

سلام دوستان، من کدها رو تا اون قسمت که عکس ها دانلود میشن و داخل فایل 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 سال پیش)
 برای این سوال پاسخی وجود ندارد.

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