Advertisement
Guest User

Untitled

a guest
Apr 29th, 2016
48
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.15 KB | None | 0 0
  1. import android.content.Intent;
  2. import android.graphics.Bitmap;
  3. import android.graphics.BitmapFactory;
  4. import android.os.AsyncTask;
  5. import android.support.v7.app.AppCompatActivity;
  6. import android.os.Bundle;
  7. import android.util.Log;
  8. import android.view.View;
  9. import android.widget.AbsListView;
  10. import android.widget.AdapterView;
  11. import android.widget.ListView;
  12. import android.widget.SimpleAdapter;
  13. import java.io.File;
  14. import java.io.FileOutputStream;
  15. import java.io.InputStream;
  16. import java.net.HttpURLConnection;
  17. import java.net.URL;
  18. import java.util.ArrayList;
  19. import java.util.HashMap;
  20. import java.util.List;
  21.  
  22. public class ads extends AppCompatActivity {
  23.  
  24.  
  25. private boolean goNext = false;
  26.  
  27.  
  28. private String url_ads;
  29. private int current_page = 0;
  30.  
  31. private List<HashMap<String , Object>> all_ads = new ArrayList<>();
  32.  
  33. private ListView lv;
  34.  
  35. @Override
  36. protected void onCreate(Bundle savedInstanceState) {
  37. super.onCreate(savedInstanceState);
  38. setContentView(R.layout.activity_ads);
  39.  
  40. getWindow().getDecorView().setLayoutDirection(View.LAYOUT_DIRECTION_RTL);
  41.  
  42. /*------------------------------------------*/
  43.  
  44. clearCache();
  45.  
  46. lv = (ListView) findViewById(R.id.ads_list);
  47.  
  48. Bundle address = getIntent().getExtras();
  49.  
  50. url_ads = address.getString("url");
  51.  
  52.  
  53. make_ads_list();
  54.  
  55. lv.setOnScrollListener(new AbsListView.OnScrollListener() {
  56. @Override
  57. public void onScrollStateChanged(AbsListView view, int i) {
  58.  
  59. if (i == 1) {
  60.  
  61. if (view.getId() == lv.getId()) {
  62. int currentFirstVisibleItem = lv.getFirstVisiblePosition();
  63. int mLastFirstVisibleItem = lv.getLastVisiblePosition();
  64.  
  65. if (currentFirstVisibleItem > mLastFirstVisibleItem) {
  66. //go up
  67. } else if (currentFirstVisibleItem < mLastFirstVisibleItem) {
  68. // go down
  69. if (goNext == true) {
  70. goNext = false;
  71. make_ads_list();
  72.  
  73. }
  74. }
  75.  
  76. mLastFirstVisibleItem = currentFirstVisibleItem;
  77. }
  78.  
  79. }
  80. }
  81.  
  82. @Override
  83. public void onScroll(AbsListView absListView, int i, int i1, int i2) {
  84.  
  85. }
  86. });
  87.  
  88. lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
  89. @Override
  90. public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
  91.  
  92. Intent intent = new Intent(getApplicationContext(), show_full_ads.class);
  93.  
  94. intent.putExtra("ads", all_ads.get(position));
  95.  
  96. startActivity(intent);
  97.  
  98. }
  99. });
  100.  
  101. }
  102.  
  103. @Override
  104. protected void onDestroy() {
  105. super.onDestroy();
  106.  
  107. clearCache();
  108. }
  109.  
  110. public void make_ads_list()
  111. {
  112. try {
  113.  
  114.  
  115. goNext = true;
  116.  
  117. DownloadTask dl = new DownloadTask();
  118.  
  119. dl.execute(url_ads + current_page);
  120.  
  121. current_page ++;
  122.  
  123. goNext = true;
  124.  
  125. }
  126. catch (Exception e)
  127. {
  128. Log.i("NaqibMessage" , "error in ads Class in method make_ads_list -> " + e.toString());
  129. }
  130. }
  131.  
  132. private class DownloadTask extends AsyncTask <String , Void , String>
  133. {
  134. @Override
  135. protected String doInBackground(String... params) {
  136.  
  137. String temp = "";
  138.  
  139. try {
  140. JSONDownloader jd = new JSONDownloader();
  141.  
  142. temp = jd.downloadURL( params[0]);
  143. }
  144. catch (Exception e)
  145. {
  146. Log.i("NaqibMessage" , "error in ads Class in DownloadTask -> " + e.toString());
  147. }
  148.  
  149.  
  150. return (temp);
  151. }
  152.  
  153. @Override
  154. protected void onPostExecute(String s)
  155. {
  156. ListViewLoaderTask loader = new ListViewLoaderTask();
  157.  
  158. loader.execute(s);
  159. }
  160. }
  161.  
  162.  
  163. private class ListViewLoaderTask extends AsyncTask <String , Void , SimpleAdapter>
  164. {
  165. @Override
  166. protected SimpleAdapter doInBackground(String... params)
  167. {
  168.  
  169. try
  170. {
  171. AdsParser parser = new AdsParser();
  172. all_ads.addAll(parser.parse( params[0]) );
  173. }
  174. catch (Exception e)
  175. {
  176. Log.i("NaqibMessage" , "error in ads Class in ListViewLoaderTask-> " + e.toString());
  177. }
  178.  
  179. String[] from ={ "image" ,"title" , "intro" , "date" , "cat" };
  180.  
  181. int[] to = { R.id.ads_img ,R.id.ads_title , R.id.ads_intro , R.id.ads_date , R.id.ads_cat};
  182.  
  183. SimpleAdapter adb = new SimpleAdapter(getBaseContext() , all_ads , R.layout.ads_list_row, from ,to);
  184.  
  185. return adb;
  186. }
  187.  
  188. @Override
  189. protected void onPostExecute(SimpleAdapter adapter)
  190. {
  191. lv.setAdapter(adapter);
  192.  
  193. for (int i = 0; i < adapter.getCount(); i++)
  194. {
  195. HashMap<String , Object> hm = (HashMap<String , Object>) adapter.getItem(i);
  196.  
  197. String imgURL = (String) hm.get("image_path");
  198.  
  199. HashMap<String , Object> forDownload = new HashMap<>();
  200.  
  201. forDownload.put("image_path" , imgURL);
  202. forDownload.put("position" , i);
  203.  
  204. ImageDownloaderTask imageDownloader = new ImageDownloaderTask();
  205.  
  206. imageDownloader.execute(forDownload);
  207. }
  208.  
  209. goNext = true;
  210. }
  211. }
  212.  
  213.  
  214. private class ImageDownloaderTask extends AsyncTask<HashMap<String , Object>,Void,HashMap<String , Object>>
  215. {
  216. @Override
  217. protected HashMap<String, Object> doInBackground(HashMap<String, Object>... params)
  218. {
  219. InputStream myStream;
  220.  
  221. String imgURL = (String) params[0].get("image_path");
  222. int position = (Integer) params[0].get("position");
  223.  
  224. try
  225. {
  226. URL url = new URL(imgURL);
  227.  
  228. HttpURLConnection connection = (HttpURLConnection) url.openConnection();
  229.  
  230. connection.setDoInput(true);
  231.  
  232. connection.connect();
  233.  
  234. myStream = connection.getInputStream();
  235.  
  236. File cacheDirectory = getBaseContext().getCacheDir();
  237.  
  238. File temp = new File(cacheDirectory.getPath() + "/image_" + position + "_" + current_page + ".png");
  239.  
  240. FileOutputStream outStream = new FileOutputStream(temp);
  241.  
  242. Bitmap b = BitmapFactory.decodeStream(myStream);
  243.  
  244. b.compress(Bitmap.CompressFormat.PNG, 100, outStream);
  245.  
  246. outStream.flush();
  247.  
  248. outStream.close();
  249.  
  250. HashMap<String , Object> bitmap = new HashMap<>();
  251.  
  252. bitmap.put("image" ,temp.getPath() );
  253. bitmap.put("position" ,position );
  254.  
  255. return (bitmap);
  256.  
  257. }
  258. catch (Exception e)
  259. {
  260. Log.i("NaqibMessage" , "error in ads Class in ImageDownloaderTask -> " + e.toString());
  261.  
  262. }
  263. return null;
  264. }
  265.  
  266. @Override
  267. protected void onPostExecute(HashMap<String, Object> result)
  268. {
  269. String image = (String) result.get( "image" );
  270.  
  271. int position = (Integer) result.get( "position" );
  272.  
  273. SimpleAdapter adb = (SimpleAdapter) lv.getAdapter();
  274.  
  275. HashMap<String , Object> hm = (HashMap<String , Object>) adb.getItem( position );
  276.  
  277. hm.put( "image" , image );
  278.  
  279. adb.notifyDataSetChanged();
  280. }
  281. }
  282. public void clearCache ()
  283. {
  284. try
  285. {
  286. File[] f = getBaseContext().getCacheDir().listFiles();
  287.  
  288. for (File file : f)
  289. {
  290. file.delete();
  291. }
  292. }
  293. catch (Exception e)
  294. {
  295. Log.i("NaqibMessage" , "error in ads Class in ClearCache -> " + e.toString());
  296.  
  297. }
  298.  
  299.  
  300. }
  301.  
  302. public void ononBtnBackToHomeClick()
  303. {
  304. finish();
  305. }
  306.  
  307.  
  308. }
  309.  
  310. java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object java.util.HashMap.get(java.lang.Object)' on a null object reference
  311. at naqibshayea.afghanbazaar.ads$ImageDownloaderTask.onPostExecute(ads.java:275)
  312. at naqibshayea.afghanbazaar.ads$ImageDownloaderTask.onPostExecute(ads.java:220)
  313. at android.os.AsyncTask.finish(AsyncTask.java:651)
  314. at android.os.AsyncTask.access$500(AsyncTask.java:180)
  315. at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:668)
  316. at android.os.Handler.dispatchMessage(Handler.java:102)
  317. at android.os.Looper.loop(Looper.java:158)
  318. at android.app.ActivityThread.main(ActivityThread.java:7225)
  319. at java.lang.reflect.Method.invoke(Native Method)
  320. at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement