Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class AdvertisementAdapter extends ArrayAdapter<Advertisement> {
- private Context context;
- private List<Advertisement> advertisementList;
- public AdvertisementAdapter(Context context, int resource, List<Advertisement> objects) {
- super(context, resource, objects);
- this.context = context;
- this.advertisementList = objects;
- }
- @Override
- public View getView(int position, View convertView, ViewGroup parent) {
- LayoutInflater inflater =
- (LayoutInflater) context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
- View view = inflater.inflate(R.layout.item_advertisement, parent, false);
- Advertisement advertisement = advertisementList.get(position);
- TextView tv = (TextView) view.findViewById(R.id.textView1);
- tv.setText(advertisement.getTitle());
- return view;
- }
- }
- public class Home extends ListActivity implements OnScrollListener {
- TextView output;
- List<MyTask> tasks;
- String uri = "http://MyHost.com/x/y/z";
- int pageIndex = 1;
- int pageSize = 10;
- List<Advertisement> advertisementList;
- AdvertisementAdapter adapter;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.home);
- getListView().setOnScrollListener(this);
- tasks = new ArrayList<>();
- requestData(uri);
- }
- @Override
- public void onScroll(AbsListView view, int firstVisibleItem,
- int visibleItemCount, int totalItemCount) {
- // empty
- }
- @Override
- public void onScrollStateChanged(AbsListView listView, int scrollState) {
- if (scrollState == SCROLL_STATE_IDLE) {
- if (listView.getLastVisiblePosition() >= listView.getCount() - 1)
- {
- pageIndex++;
- getData();
- }
- }
- private void requestData(String uri) {
- RequestPackage p = new RequestPackage();
- p.setMethod("GET");
- p.setUri(uri);
- p.setParam("pageindex", Integer.toString(pageIndex));
- p.setParam("pagesize", Integer.toString(pageSize));
- MyTask task = new MyTask();
- task.execute(p);
- }
- protected void updateDisplay() {
- if (adapter != null)
- {
- adapter.notifyDataSetChanged();
- }else
- {
- adapter = new AdvertisementAdapter(this,R.layout.item_advertisement, advertisementList);
- }
- setListAdapter(adapter);
- }
- private class MyTask extends
- AsyncTask<RequestPackage, String, List<Advertisement>> {
- @Override
- protected void onPreExecute() {
- tasks.add(this);
- }
- @Override
- protected List<Advertisement> doInBackground(RequestPackage... params) {
- String content = HttpManager.getData(params[0]);
- if (advertisementList == null)
- {
- advertisementList = AdvertisementJSONParser.parseJson(content);
- } else
- {
- advertisementList.addAll(AdvertisementJSONParser.parseJson(content));
- }
- return advertisementList;
- }
- @Override
- protected void onPostExecute(List<Advertisement> result) {
- tasks.remove(this);
- advertisementList = result;
- updateDisplay();
- }
- }
- }
- protected void updateDisplay() {
- if (adapter != null)
- {
- adapter.notifyDataSetChanged();
- } else {
- adapter = new AdvertisementAdapter(this,R.layout.item_advertisement, advertisementList);
- setListAdapter(adapter);
- }
- }
- if (adapter != null){
- adapter.notifyDataSetChange();
- }else{
- adapter = new AdvertisementAdapter(this,R.layout.item_advertisement, advertisementList);
- }
- <?xml version="1.0" encoding="utf-8"?>
- <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:id="@+id/footer_layout"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:background="@android:color/transparent"
- android:padding="@dimen/case_list_item_padding" >
- <ProgressBar
- android:id="@+id/progressBar1"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_centerVertical="true"
- android:layout_gravity="center_vertical" />
- <TextView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_centerVertical="true"
- android:layout_marginLeft="25dp"
- android:layout_toRightOf="@+id/progressBar1"
- android:text="@string/loading_text" />
- </RelativeLayout>
- mView = ((LayoutInflater) this
- .getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(
- R.layout.listview_footer, null, false);
- mListViewCase.addFooterView(mView, null, false);
- package com.example.doctorscare;
- import java.util.ArrayList;
- import java.util.concurrent.ExecutionException;
- import java.util.concurrent.TimeUnit;
- import java.util.concurrent.TimeoutException;
- import org.json.JSONArray;
- import org.json.JSONException;
- import org.json.JSONObject;
- import android.app.AlertDialog;
- import android.app.ProgressDialog;
- import android.content.Context;
- import android.content.DialogInterface;
- import android.content.DialogInterface.OnClickListener;
- import android.content.Intent;
- import android.os.AsyncTask;
- import android.os.Bundle;
- import android.support.v4.view.MenuItemCompat;
- import android.support.v7.app.ActionBarActivity;
- import android.support.v7.widget.SearchView;
- import android.support.v7.widget.SearchView.OnQueryTextListener;
- import android.view.LayoutInflater;
- import android.view.Menu;
- import android.view.MenuItem;
- import android.view.View;
- import android.widget.AbsListView;
- import android.widget.AbsListView.OnScrollListener;
- import android.widget.AdapterView;
- import android.widget.AdapterView.OnItemClickListener;
- import android.widget.ListView;
- import android.widget.Toast;
- public class CaseListingActivity extends ActionBarActivity {
- ListView mListViewCase;
- ArrayList<CaseDetails> mArrayList;
- CaseListAdapter mCaseListAdapter;
- View mView;
- CaseListingTask mCaseListingTask;
- int preLast;
- int currentPage = 1;
- public static final String URL = "xxxxxxxx";
- public static final String GET_SUBJECT_RESULT = "GetSubjectResult";
- public static final String ID = "Id";
- public static final String SUB = "Sub";
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_case_listing);
- mArrayList = new ArrayList<CaseDetails>();
- mCaseListAdapter = new CaseListAdapter(this, mArrayList);
- mView = ((LayoutInflater) this
- .getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(
- R.layout.listview_footer, null, false);
- mListViewCase = (ListView) findViewById(R.id.listViewCaseListing);
- // mListViewCase.addFooterView(mView);
- mListViewCase.setAdapter(mCaseListAdapter);
- mListViewCase.setOnItemClickListener(new OnItemClickListener() {
- @Override
- public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
- long arg3) {
- // TODO Auto-generated method stub
- Toast.makeText(getBaseContext(),
- arg0.getItemAtPosition(arg2).toString(),
- Toast.LENGTH_SHORT).show();
- }
- });
- // your AsyncTask code
- // new CaseListingTask().execute(URL + currentPage);
- executeCaseListingTask(currentPage);
- }
- public void setListViewOnScrollListener(){
- mListViewCase.setOnScrollListener(new OnScrollListener() {
- @Override
- public void onScrollStateChanged(AbsListView view, int scrollState) {
- // TODO Auto-generated method stub
- }
- @Override
- public void onScroll(AbsListView view, int firstVisibleItem,
- int visibleItemCount, int totalItemCount) {
- // TODO Auto-generated method stub
- switch (view.getId()) {
- case R.id.listViewCaseListing:
- final int lastItem = firstVisibleItem + visibleItemCount;
- if (lastItem == totalItemCount) {
- if (preLast != lastItem) {
- // to avoid multiple calls for last item
- preLast = lastItem;
- if (mCaseListingTask.getStatus() == AsyncTask.Status.RUNNING) {
- // Do Something
- } else {
- currentPage++;
- // load more list items:
- mCaseListingTask = new CaseListingTask();
- mCaseListingTask.execute(URL + currentPage);
- }
- }
- }
- break;
- }
- }
- });
- }
- @Override
- public boolean onCreateOptionsMenu(Menu menu) {
- // TODO Auto-generated method stub
- getMenuInflater().inflate(R.menu.menu, menu);
- MenuItem searchItem = menu.findItem(R.id.action_search);
- SearchView searchView = (SearchView) MenuItemCompat
- .getActionView(searchItem);
- searchView.setOnQueryTextListener(new OnQueryTextListener() {
- @Override
- public boolean onQueryTextSubmit(String arg0) {
- // TODO Auto-generated method stub
- Intent mIntent = new Intent(CaseListingActivity.this,
- SearchResultActivity.class);
- mIntent.putExtra("searchQuery", arg0);
- startActivity(mIntent);
- return false;
- }
- @Override
- public boolean onQueryTextChange(String arg0) {
- // TODO Auto-generated method stub
- return false;
- }
- });
- return super.onCreateOptionsMenu(menu);
- }
- public void executeCaseListingTask(int page) {
- mCaseListingTask = new CaseListingTask();
- try {
- mCaseListingTask.get(10000, TimeUnit.MILLISECONDS);
- } catch (InterruptedException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (ExecutionException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (TimeoutException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- if (currentPage != 1)
- currentPage--;
- showAlert("TimeOut",
- "Aww. Your internet connection is too slow. Try again ?");
- }
- }
- public void showAlert(String title, String message) {
- AlertDialog.Builder mAlertDialogBuilder = new AlertDialog.Builder(this);
- mAlertDialogBuilder.setTitle(title);
- mAlertDialogBuilder.setMessage(message);
- mAlertDialogBuilder.setPositiveButton("Yes", new OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- // TODO Auto-generated method stub
- dialog.dismiss();
- executeCaseListingTask(currentPage);
- }
- });
- mAlertDialogBuilder.setNegativeButton("No, thanks",
- new OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- // TODO Auto-generated method stub
- }
- });
- mAlertDialogBuilder.show();
- }
- public class CaseListingTask extends AsyncTask<String, Void, String> {
- ProgressDialog mProgressDialog;
- @Override
- protected String doInBackground(String... params) {
- // TODO Auto-generated method stub
- String result = "";
- for (String string : params) {
- result = new JSONParser().getJSONFromUrl(string);
- }
- return result;
- }
- /*
- * (non-Javadoc)
- *
- * @see android.os.AsyncTask#onPostExecute(java.lang.Object)
- */
- @Override
- protected void onPostExecute(String result) {
- // TODO Auto-generated method stub
- super.onPostExecute(result);
- try {
- JSONObject mJsonObject = new JSONObject(result);
- JSONArray mJsonArray = mJsonObject
- .getJSONArray(GET_SUBJECT_RESULT);
- for (int i = 0; i < mJsonArray.length(); i++) {
- JSONObject mSubJSONObject = mJsonArray.getJSONObject(i);
- mArrayList.add(new CaseDetails(mSubJSONObject.getInt(ID),
- mSubJSONObject.getString(SUB)));
- }
- mCaseListAdapter.notifyDataSetChanged();
- } catch (JSONException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- mProgressDialog.dismiss();
- }
- /*
- * (non-Javadoc)
- *
- * @see android.os.AsyncTask#onPreExecute()
- */
- @Override
- protected void onPreExecute() {
- // TODO Auto-generated method stub
- super.onPreExecute();
- mProgressDialog = ProgressDialog.show(CaseListingActivity.this,
- "Please Wait...", "Loading...", true, false);
- // mListViewCase.addFooterView(mView, null, false);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement