Advertisement
Guest User

Untitled

a guest
Dec 18th, 2014
143
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 14.08 KB | None | 0 0
  1. public class AdvertisementAdapter extends ArrayAdapter<Advertisement> {
  2.  
  3. private Context context;
  4. private List<Advertisement> advertisementList;
  5.  
  6. public AdvertisementAdapter(Context context, int resource, List<Advertisement> objects) {
  7. super(context, resource, objects);
  8. this.context = context;
  9. this.advertisementList = objects;
  10. }
  11.  
  12. @Override
  13. public View getView(int position, View convertView, ViewGroup parent) {
  14.  
  15. LayoutInflater inflater =
  16. (LayoutInflater) context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
  17.  
  18. View view = inflater.inflate(R.layout.item_advertisement, parent, false);
  19.  
  20. Advertisement advertisement = advertisementList.get(position);
  21. TextView tv = (TextView) view.findViewById(R.id.textView1);
  22. tv.setText(advertisement.getTitle());
  23.  
  24. return view;
  25. }
  26.  
  27.  
  28. }
  29.  
  30.  
  31.  
  32. public class Home extends ListActivity implements OnScrollListener {
  33. TextView output;
  34. List<MyTask> tasks;
  35. String uri = "http://MyHost.com/x/y/z";
  36. int pageIndex = 1;
  37. int pageSize = 10;
  38.  
  39. List<Advertisement> advertisementList;
  40. AdvertisementAdapter adapter;
  41.  
  42.  
  43.  
  44. @Override
  45. protected void onCreate(Bundle savedInstanceState) {
  46. super.onCreate(savedInstanceState);
  47.  
  48. setContentView(R.layout.home);
  49. getListView().setOnScrollListener(this);
  50. tasks = new ArrayList<>();
  51.  
  52. requestData(uri);
  53.  
  54. }
  55.  
  56. @Override
  57. public void onScroll(AbsListView view, int firstVisibleItem,
  58. int visibleItemCount, int totalItemCount) {
  59. // empty
  60. }
  61.  
  62. @Override
  63. public void onScrollStateChanged(AbsListView listView, int scrollState) {
  64.  
  65. if (scrollState == SCROLL_STATE_IDLE) {
  66.  
  67. if (listView.getLastVisiblePosition() >= listView.getCount() - 1)
  68. {
  69. pageIndex++;
  70. getData();
  71. }
  72. }
  73.  
  74.  
  75. private void requestData(String uri) {
  76.  
  77. RequestPackage p = new RequestPackage();
  78. p.setMethod("GET");
  79. p.setUri(uri);
  80. p.setParam("pageindex", Integer.toString(pageIndex));
  81. p.setParam("pagesize", Integer.toString(pageSize));
  82.  
  83. MyTask task = new MyTask();
  84. task.execute(p);
  85. }
  86.  
  87. protected void updateDisplay() {
  88.  
  89. if (adapter != null)
  90. {
  91. adapter.notifyDataSetChanged();
  92. }else
  93. {
  94. adapter = new AdvertisementAdapter(this,R.layout.item_advertisement, advertisementList);
  95. }
  96.  
  97. setListAdapter(adapter);
  98.  
  99. }
  100.  
  101. private class MyTask extends
  102. AsyncTask<RequestPackage, String, List<Advertisement>> {
  103.  
  104. @Override
  105.  
  106. protected void onPreExecute() {
  107. tasks.add(this);
  108. }
  109.  
  110. @Override
  111. protected List<Advertisement> doInBackground(RequestPackage... params) {
  112.  
  113. String content = HttpManager.getData(params[0]);
  114.  
  115. if (advertisementList == null)
  116. {
  117. advertisementList = AdvertisementJSONParser.parseJson(content);
  118. } else
  119. {
  120. advertisementList.addAll(AdvertisementJSONParser.parseJson(content));
  121. }
  122.  
  123. return advertisementList;
  124. }
  125.  
  126. @Override
  127. protected void onPostExecute(List<Advertisement> result) {
  128.  
  129. tasks.remove(this);
  130. advertisementList = result;
  131. updateDisplay();
  132.  
  133. }
  134.  
  135. }
  136.  
  137. }
  138.  
  139. protected void updateDisplay() {
  140. if (adapter != null)
  141. {
  142. adapter.notifyDataSetChanged();
  143. } else {
  144. adapter = new AdvertisementAdapter(this,R.layout.item_advertisement, advertisementList);
  145. setListAdapter(adapter);
  146. }
  147. }
  148.  
  149. if (adapter != null){
  150. adapter.notifyDataSetChange();
  151. }else{
  152. adapter = new AdvertisementAdapter(this,R.layout.item_advertisement, advertisementList);
  153. }
  154.  
  155. <?xml version="1.0" encoding="utf-8"?>
  156. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  157. android:id="@+id/footer_layout"
  158. android:layout_width="match_parent"
  159. android:layout_height="wrap_content"
  160. android:background="@android:color/transparent"
  161. android:padding="@dimen/case_list_item_padding" >
  162.  
  163. <ProgressBar
  164. android:id="@+id/progressBar1"
  165. android:layout_width="wrap_content"
  166. android:layout_height="wrap_content"
  167. android:layout_centerVertical="true"
  168. android:layout_gravity="center_vertical" />
  169.  
  170. <TextView
  171. android:layout_width="wrap_content"
  172. android:layout_height="wrap_content"
  173. android:layout_centerVertical="true"
  174. android:layout_marginLeft="25dp"
  175. android:layout_toRightOf="@+id/progressBar1"
  176. android:text="@string/loading_text" />
  177.  
  178. </RelativeLayout>
  179.  
  180. mView = ((LayoutInflater) this
  181. .getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(
  182. R.layout.listview_footer, null, false);
  183.  
  184. mListViewCase.addFooterView(mView, null, false);
  185.  
  186. package com.example.doctorscare;
  187.  
  188. import java.util.ArrayList;
  189. import java.util.concurrent.ExecutionException;
  190. import java.util.concurrent.TimeUnit;
  191. import java.util.concurrent.TimeoutException;
  192.  
  193. import org.json.JSONArray;
  194. import org.json.JSONException;
  195. import org.json.JSONObject;
  196.  
  197. import android.app.AlertDialog;
  198. import android.app.ProgressDialog;
  199. import android.content.Context;
  200. import android.content.DialogInterface;
  201. import android.content.DialogInterface.OnClickListener;
  202. import android.content.Intent;
  203. import android.os.AsyncTask;
  204. import android.os.Bundle;
  205. import android.support.v4.view.MenuItemCompat;
  206. import android.support.v7.app.ActionBarActivity;
  207. import android.support.v7.widget.SearchView;
  208. import android.support.v7.widget.SearchView.OnQueryTextListener;
  209. import android.view.LayoutInflater;
  210. import android.view.Menu;
  211. import android.view.MenuItem;
  212. import android.view.View;
  213. import android.widget.AbsListView;
  214. import android.widget.AbsListView.OnScrollListener;
  215. import android.widget.AdapterView;
  216. import android.widget.AdapterView.OnItemClickListener;
  217. import android.widget.ListView;
  218. import android.widget.Toast;
  219.  
  220. public class CaseListingActivity extends ActionBarActivity {
  221.  
  222. ListView mListViewCase;
  223. ArrayList<CaseDetails> mArrayList;
  224. CaseListAdapter mCaseListAdapter;
  225. View mView;
  226.  
  227. CaseListingTask mCaseListingTask;
  228.  
  229. int preLast;
  230. int currentPage = 1;
  231.  
  232. public static final String URL = "xxxxxxxx";
  233. public static final String GET_SUBJECT_RESULT = "GetSubjectResult";
  234. public static final String ID = "Id";
  235. public static final String SUB = "Sub";
  236.  
  237. @Override
  238. protected void onCreate(Bundle savedInstanceState) {
  239. super.onCreate(savedInstanceState);
  240. setContentView(R.layout.activity_case_listing);
  241.  
  242. mArrayList = new ArrayList<CaseDetails>();
  243. mCaseListAdapter = new CaseListAdapter(this, mArrayList);
  244.  
  245. mView = ((LayoutInflater) this
  246. .getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(
  247. R.layout.listview_footer, null, false);
  248.  
  249. mListViewCase = (ListView) findViewById(R.id.listViewCaseListing);
  250. // mListViewCase.addFooterView(mView);
  251. mListViewCase.setAdapter(mCaseListAdapter);
  252. mListViewCase.setOnItemClickListener(new OnItemClickListener() {
  253.  
  254. @Override
  255. public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
  256. long arg3) {
  257. // TODO Auto-generated method stub
  258. Toast.makeText(getBaseContext(),
  259. arg0.getItemAtPosition(arg2).toString(),
  260. Toast.LENGTH_SHORT).show();
  261. }
  262. });
  263.  
  264. // your AsyncTask code
  265.  
  266. // new CaseListingTask().execute(URL + currentPage);
  267.  
  268. executeCaseListingTask(currentPage);
  269. }
  270.  
  271. public void setListViewOnScrollListener(){
  272.  
  273. mListViewCase.setOnScrollListener(new OnScrollListener() {
  274.  
  275. @Override
  276. public void onScrollStateChanged(AbsListView view, int scrollState) {
  277. // TODO Auto-generated method stub
  278.  
  279. }
  280.  
  281. @Override
  282. public void onScroll(AbsListView view, int firstVisibleItem,
  283. int visibleItemCount, int totalItemCount) {
  284. // TODO Auto-generated method stub
  285. switch (view.getId()) {
  286.  
  287. case R.id.listViewCaseListing:
  288.  
  289. final int lastItem = firstVisibleItem + visibleItemCount;
  290. if (lastItem == totalItemCount) {
  291. if (preLast != lastItem) {
  292. // to avoid multiple calls for last item
  293.  
  294. preLast = lastItem;
  295.  
  296. if (mCaseListingTask.getStatus() == AsyncTask.Status.RUNNING) {
  297. // Do Something
  298. } else {
  299. currentPage++;
  300. // load more list items:
  301. mCaseListingTask = new CaseListingTask();
  302. mCaseListingTask.execute(URL + currentPage);
  303. }
  304. }
  305. }
  306. break;
  307. }
  308. }
  309. });
  310. }
  311.  
  312. @Override
  313. public boolean onCreateOptionsMenu(Menu menu) {
  314. // TODO Auto-generated method stub
  315. getMenuInflater().inflate(R.menu.menu, menu);
  316.  
  317. MenuItem searchItem = menu.findItem(R.id.action_search);
  318. SearchView searchView = (SearchView) MenuItemCompat
  319. .getActionView(searchItem);
  320. searchView.setOnQueryTextListener(new OnQueryTextListener() {
  321.  
  322. @Override
  323. public boolean onQueryTextSubmit(String arg0) {
  324. // TODO Auto-generated method stub
  325.  
  326. Intent mIntent = new Intent(CaseListingActivity.this,
  327. SearchResultActivity.class);
  328. mIntent.putExtra("searchQuery", arg0);
  329. startActivity(mIntent);
  330.  
  331. return false;
  332. }
  333.  
  334. @Override
  335. public boolean onQueryTextChange(String arg0) {
  336. // TODO Auto-generated method stub
  337. return false;
  338. }
  339. });
  340.  
  341. return super.onCreateOptionsMenu(menu);
  342. }
  343.  
  344. public void executeCaseListingTask(int page) {
  345. mCaseListingTask = new CaseListingTask();
  346. try {
  347. mCaseListingTask.get(10000, TimeUnit.MILLISECONDS);
  348. } catch (InterruptedException e) {
  349. // TODO Auto-generated catch block
  350. e.printStackTrace();
  351. } catch (ExecutionException e) {
  352. // TODO Auto-generated catch block
  353. e.printStackTrace();
  354. } catch (TimeoutException e) {
  355. // TODO Auto-generated catch block
  356. e.printStackTrace();
  357.  
  358. if (currentPage != 1)
  359. currentPage--;
  360.  
  361. showAlert("TimeOut",
  362. "Aww. Your internet connection is too slow. Try again ?");
  363. }
  364. }
  365.  
  366. public void showAlert(String title, String message) {
  367. AlertDialog.Builder mAlertDialogBuilder = new AlertDialog.Builder(this);
  368. mAlertDialogBuilder.setTitle(title);
  369. mAlertDialogBuilder.setMessage(message);
  370. mAlertDialogBuilder.setPositiveButton("Yes", new OnClickListener() {
  371.  
  372. @Override
  373. public void onClick(DialogInterface dialog, int which) {
  374. // TODO Auto-generated method stub
  375.  
  376. dialog.dismiss();
  377. executeCaseListingTask(currentPage);
  378. }
  379. });
  380. mAlertDialogBuilder.setNegativeButton("No, thanks",
  381. new OnClickListener() {
  382.  
  383. @Override
  384. public void onClick(DialogInterface dialog, int which) {
  385. // TODO Auto-generated method stub
  386.  
  387. }
  388. });
  389. mAlertDialogBuilder.show();
  390. }
  391.  
  392. public class CaseListingTask extends AsyncTask<String, Void, String> {
  393.  
  394. ProgressDialog mProgressDialog;
  395.  
  396. @Override
  397. protected String doInBackground(String... params) {
  398. // TODO Auto-generated method stub
  399.  
  400. String result = "";
  401. for (String string : params) {
  402. result = new JSONParser().getJSONFromUrl(string);
  403. }
  404. return result;
  405. }
  406.  
  407. /*
  408. * (non-Javadoc)
  409. *
  410. * @see android.os.AsyncTask#onPostExecute(java.lang.Object)
  411. */
  412. @Override
  413. protected void onPostExecute(String result) {
  414. // TODO Auto-generated method stub
  415. super.onPostExecute(result);
  416.  
  417. try {
  418. JSONObject mJsonObject = new JSONObject(result);
  419. JSONArray mJsonArray = mJsonObject
  420. .getJSONArray(GET_SUBJECT_RESULT);
  421.  
  422. for (int i = 0; i < mJsonArray.length(); i++) {
  423. JSONObject mSubJSONObject = mJsonArray.getJSONObject(i);
  424. mArrayList.add(new CaseDetails(mSubJSONObject.getInt(ID),
  425. mSubJSONObject.getString(SUB)));
  426. }
  427. mCaseListAdapter.notifyDataSetChanged();
  428. } catch (JSONException e) {
  429. // TODO Auto-generated catch block
  430. e.printStackTrace();
  431. }
  432.  
  433. mProgressDialog.dismiss();
  434. }
  435.  
  436. /*
  437. * (non-Javadoc)
  438. *
  439. * @see android.os.AsyncTask#onPreExecute()
  440. */
  441. @Override
  442. protected void onPreExecute() {
  443. // TODO Auto-generated method stub
  444. super.onPreExecute();
  445.  
  446. mProgressDialog = ProgressDialog.show(CaseListingActivity.this,
  447. "Please Wait...", "Loading...", true, false);
  448.  
  449. // mListViewCase.addFooterView(mView, null, false);
  450. }
  451. }
  452. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement