Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import android.content.Intent;
- import android.graphics.Bitmap;
- import android.graphics.BitmapFactory;
- import android.os.AsyncTask;
- import android.support.v7.app.AppCompatActivity;
- import android.os.Bundle;
- import android.util.Log;
- import android.view.View;
- import android.widget.AbsListView;
- import android.widget.AdapterView;
- import android.widget.ListView;
- import android.widget.SimpleAdapter;
- import java.io.File;
- import java.io.FileOutputStream;
- import java.io.InputStream;
- import java.net.HttpURLConnection;
- import java.net.URL;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.List;
- public class ads extends AppCompatActivity {
- private boolean goNext = false;
- private String url_ads;
- private int current_page = 0;
- private List<HashMap<String , Object>> all_ads = new ArrayList<>();
- private ListView lv;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_ads);
- getWindow().getDecorView().setLayoutDirection(View.LAYOUT_DIRECTION_RTL);
- /*------------------------------------------*/
- clearCache();
- lv = (ListView) findViewById(R.id.ads_list);
- Bundle address = getIntent().getExtras();
- url_ads = address.getString("url");
- make_ads_list();
- lv.setOnScrollListener(new AbsListView.OnScrollListener() {
- @Override
- public void onScrollStateChanged(AbsListView view, int i) {
- if (i == 1) {
- if (view.getId() == lv.getId()) {
- int currentFirstVisibleItem = lv.getFirstVisiblePosition();
- int mLastFirstVisibleItem = lv.getLastVisiblePosition();
- if (currentFirstVisibleItem > mLastFirstVisibleItem) {
- //go up
- } else if (currentFirstVisibleItem < mLastFirstVisibleItem) {
- // go down
- if (goNext == true) {
- goNext = false;
- make_ads_list();
- }
- }
- mLastFirstVisibleItem = currentFirstVisibleItem;
- }
- }
- }
- @Override
- public void onScroll(AbsListView absListView, int i, int i1, int i2) {
- }
- });
- lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
- @Override
- public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
- Intent intent = new Intent(getApplicationContext(), show_full_ads.class);
- intent.putExtra("ads", all_ads.get(position));
- startActivity(intent);
- }
- });
- }
- @Override
- protected void onDestroy() {
- super.onDestroy();
- clearCache();
- }
- public void make_ads_list()
- {
- try {
- goNext = true;
- DownloadTask dl = new DownloadTask();
- dl.execute(url_ads + current_page);
- current_page ++;
- goNext = true;
- }
- catch (Exception e)
- {
- Log.i("NaqibMessage" , "error in ads Class in method make_ads_list -> " + e.toString());
- }
- }
- private class DownloadTask extends AsyncTask <String , Void , String>
- {
- @Override
- protected String doInBackground(String... params) {
- String temp = "";
- try {
- JSONDownloader jd = new JSONDownloader();
- temp = jd.downloadURL( params[0]);
- }
- catch (Exception e)
- {
- Log.i("NaqibMessage" , "error in ads Class in DownloadTask -> " + e.toString());
- }
- return (temp);
- }
- @Override
- protected void onPostExecute(String s)
- {
- ListViewLoaderTask loader = new ListViewLoaderTask();
- loader.execute(s);
- }
- }
- private class ListViewLoaderTask extends AsyncTask <String , Void , SimpleAdapter>
- {
- @Override
- protected SimpleAdapter doInBackground(String... params)
- {
- try
- {
- AdsParser parser = new AdsParser();
- all_ads.addAll(parser.parse( params[0]) );
- }
- catch (Exception e)
- {
- Log.i("NaqibMessage" , "error in ads Class in ListViewLoaderTask-> " + e.toString());
- }
- String[] from ={ "image" ,"title" , "intro" , "date" , "cat" };
- int[] to = { R.id.ads_img ,R.id.ads_title , R.id.ads_intro , R.id.ads_date , R.id.ads_cat};
- SimpleAdapter adb = new SimpleAdapter(getBaseContext() , all_ads , R.layout.ads_list_row, from ,to);
- return adb;
- }
- @Override
- protected void onPostExecute(SimpleAdapter adapter)
- {
- lv.setAdapter(adapter);
- for (int i = 0; i < adapter.getCount(); i++)
- {
- HashMap<String , Object> hm = (HashMap<String , Object>) adapter.getItem(i);
- String imgURL = (String) hm.get("image_path");
- HashMap<String , Object> forDownload = new HashMap<>();
- forDownload.put("image_path" , imgURL);
- forDownload.put("position" , i);
- ImageDownloaderTask imageDownloader = new ImageDownloaderTask();
- imageDownloader.execute(forDownload);
- }
- goNext = true;
- }
- }
- private class ImageDownloaderTask extends AsyncTask<HashMap<String , Object>,Void,HashMap<String , Object>>
- {
- @Override
- protected HashMap<String, Object> doInBackground(HashMap<String, Object>... params)
- {
- InputStream myStream;
- String imgURL = (String) params[0].get("image_path");
- int position = (Integer) params[0].get("position");
- try
- {
- URL url = new URL(imgURL);
- HttpURLConnection connection = (HttpURLConnection) url.openConnection();
- connection.setDoInput(true);
- connection.connect();
- myStream = connection.getInputStream();
- File cacheDirectory = getBaseContext().getCacheDir();
- File temp = new File(cacheDirectory.getPath() + "/image_" + position + "_" + current_page + ".png");
- FileOutputStream outStream = new FileOutputStream(temp);
- Bitmap b = BitmapFactory.decodeStream(myStream);
- b.compress(Bitmap.CompressFormat.PNG, 100, outStream);
- outStream.flush();
- outStream.close();
- HashMap<String , Object> bitmap = new HashMap<>();
- bitmap.put("image" ,temp.getPath() );
- bitmap.put("position" ,position );
- return (bitmap);
- }
- catch (Exception e)
- {
- Log.i("NaqibMessage" , "error in ads Class in ImageDownloaderTask -> " + e.toString());
- }
- return null;
- }
- @Override
- protected void onPostExecute(HashMap<String, Object> result)
- {
- String image = (String) result.get( "image" );
- int position = (Integer) result.get( "position" );
- SimpleAdapter adb = (SimpleAdapter) lv.getAdapter();
- HashMap<String , Object> hm = (HashMap<String , Object>) adb.getItem( position );
- hm.put( "image" , image );
- adb.notifyDataSetChanged();
- }
- }
- public void clearCache ()
- {
- try
- {
- File[] f = getBaseContext().getCacheDir().listFiles();
- for (File file : f)
- {
- file.delete();
- }
- }
- catch (Exception e)
- {
- Log.i("NaqibMessage" , "error in ads Class in ClearCache -> " + e.toString());
- }
- }
- public void ononBtnBackToHomeClick()
- {
- finish();
- }
- }
- java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object java.util.HashMap.get(java.lang.Object)' on a null object reference
- at naqibshayea.afghanbazaar.ads$ImageDownloaderTask.onPostExecute(ads.java:275)
- at naqibshayea.afghanbazaar.ads$ImageDownloaderTask.onPostExecute(ads.java:220)
- at android.os.AsyncTask.finish(AsyncTask.java:651)
- at android.os.AsyncTask.access$500(AsyncTask.java:180)
- at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:668)
- at android.os.Handler.dispatchMessage(Handler.java:102)
- at android.os.Looper.loop(Looper.java:158)
- at android.app.ActivityThread.main(ActivityThread.java:7225)
- at java.lang.reflect.Method.invoke(Native Method)
- at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement