package edu.mit.mitmobile2.libraries; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; import android.app.Activity; import android.content.Intent; import android.graphics.Color; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.text.Html; import android.util.Log; import android.view.KeyEvent; import android.view.Menu; import android.view.View; import android.widget.Button; import android.widget.CheckBox; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.ListView; import android.widget.RelativeLayout; import android.widget.TabHost; import android.widget.TabHost.OnTabChangeListener; import android.widget.TextView; import edu.mit.mitmobile2.FullScreenLoader; import edu.mit.mitmobile2.MobileWebApi; import edu.mit.mitmobile2.NewModule; import edu.mit.mitmobile2.NewModuleActivity; import edu.mit.mitmobile2.R; import edu.mit.mitmobile2.SimpleArrayAdapter; import edu.mit.mitmobile2.TabConfigurator; import edu.mit.mitmobile2.objs.FineListItem; import edu.mit.mitmobile2.objs.HoldListItem; import edu.mit.mitmobile2.objs.LoanListItem; import edu.mit.mitmobile2.objs.RenewResponseItem; //import edu.mit.mitmobile2.libraries.LibraryModel.UserIdentity; public class LibraryYourAccount extends NewModuleActivity { private static final String TAG = "LibraryYourAccount"; private static final int LOANS_TAB = 0; private static final int FINES_TAB = 1; private static final int HOLDS_TAB = 2; private int currentTab = 0; protected TabHost tabHost; protected Activity mActivity; protected int ADD_NEW_TAB = Menu.FIRST; protected TabHost.TabSpec spec; protected int displayWidth; // Loan Properties private View mLoanResults; private ListView loanListView; private FullScreenLoader loanLoadingView; private RelativeLayout loansButtonRow; private RelativeLayout renewButtonRow; private RelativeLayout doneButtonRow; private TextView loanTitleTV; private TextView loanAuthorTV; private TextView loanStatusTV; private ImageView loanStatusIcon; private LinearLayout renewStatusError; private LinearLayout renewStatusSuccess; private TextView renewStatusErrorTV; private TextView renewStatusSuccessTV; private Button loanRenewBooksButton; private Button loanRenewSelectedBooksButton; private Button loanCancelRenewBooksButton; private Button loanDoneButton; private static String REPLY_OK = "ok"; private static int mode = 1; // determines whether the activity is in "loan" mode or "renew" mode public static final int LOAN_MODE = 1; public static final int RENEW_MODE = 2; public static final int RENEW_RESULTS_MODE = 3; private CheckBox cb; static LoanData loanData; LibraryLoanAdapter libraryLoanAdapter; // Fine Properties static FineData fineData; private View mFineResults; private TextView fineBalanceTV; private TextView fineStatusTV; private TextView fineDisplayAmountTV; private TextView fineTitleTV; private TextView fineAuthorTV; private TextView fineFineDateTV; private ListView fineListView; private FullScreenLoader fineLoadingView; // Hold Properties private ListView holdListView; private FullScreenLoader holdLoadingView; private View mHoldResults; private TextView holdTitleTV; private TextView holdAuthorTV; private TextView holdStatusTV; private TextView holdPickupLocationTV; private ImageView holdStatusIcon; static HoldData holdData; // Getters and Setters public static int getMode() { return mode; } public static void setMode(int mode) { LibraryYourAccount.mode = mode; } public static LoanData getLoanData() { return loanData; } public static void setLoanData(LoanData loanData) { LibraryYourAccount.loanData = loanData; } public static HoldData getHoldData() { return holdData; } public static void setHoldData(HoldData holdData) { LibraryHolds.holdData = holdData; } @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); mActivity = this; setContentView(R.layout.your_account_tab_layout); setMode(LibraryYourAccount.LOAN_MODE); setUpViews(); setUpButtons(); setUpTabs(); } // SET UP VIEWS private void setUpViews() { mLoanResults = (View) findViewById(R.id.loanResults); loanStatusTV = (TextView) findViewById(R.id.loanStatusTV); renewStatusError = (LinearLayout) findViewById(R.id.renewStatusError); renewStatusSuccess = (LinearLayout) findViewById(R.id.renewStatusSuccess); renewStatusErrorTV = (TextView) findViewById(R.id.renewStatusErrorTV); renewStatusSuccessTV = (TextView) findViewById(R.id.renewStatusSuccessTV); loanListView = (ListView) findViewById(R.id.listLibraryLoans); loanLoadingView = (FullScreenLoader) findViewById(R.id.libraryLoanLoading); loansButtonRow = (RelativeLayout) findViewById(R.id.loansButtonRow); renewButtonRow = (RelativeLayout) findViewById(R.id.renewButtonRow); doneButtonRow = (RelativeLayout) findViewById(R.id.doneButtonRow); fineBalanceTV = (TextView) findViewById(R.id.fineBalanceTV); fineStatusTV = (TextView) findViewById(R.id.fineStatusTV); mFineResults = (View) findViewById(R.id.fineResults); fineListView = (ListView) findViewById(R.id.listLibraryFines); fineLoadingView = (FullScreenLoader) findViewById(R.id.libraryFineLoading); holdStatusTV = (TextView) findViewById(R.id.holdStatusTV); mHoldResults = (View) findViewById(R.id.holdResults); holdListView = (ListView) findViewById(R.id.listLibraryHolds); holdLoadingView = (FullScreenLoader) findViewById(R.id.libraryHoldLoading); } // SET UP TABS private void setUpTabs() { tabHost = (TabHost)findViewById(R.id.tabHost); tabHost.setup(); // NEEDED!!! TabConfigurator tabConfigurator = new TabConfigurator(mActivity, tabHost); tabConfigurator.addTab("Loans",R.id.tabLoans); tabConfigurator.addTab("Fines",R.id.tabFines); tabConfigurator.addTab("Holds",R.id.tabHolds); tabConfigurator.configureTabs(); tabHost.setOnTabChangedListener(new OnTabChangeListener() { @Override public void onTabChanged(String tabId) { currentTab = tabHost.getCurrentTab(); switch (currentTab) { case LOANS_TAB: loadLoans(); break; case FINES_TAB: loadFines(); break; case HOLDS_TAB: loadHolds(); break; } } }); // When the tabs are first created load the loans data currentTab = tabHost.getCurrentTab(); if (currentTab == LOANS_TAB) { loadLoans(); } } // SET UP BUTTONS private void setUpButtons() { loanRenewBooksButton = (Button)findViewById(R.id.loanRenewBooksButton); loanRenewSelectedBooksButton = (Button)findViewById(R.id.loanRenewSelectedBooksButton); loanCancelRenewBooksButton = (Button)findViewById(R.id.loanCancelRenewBooksButton); loanDoneButton = (Button)findViewById(R.id.loanDoneButton); loanRenewBooksButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { showHideRenewBooks(); //Intent intent = new Intent(mContext, LibraryRenewBooks.class); //startActivity(intent); } }); loanCancelRenewBooksButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { showHideRenewBooks(); for (int l = 0; l < LibraryYourAccount.getLoanData().getLoans().size(); l++) { } //Intent intent = new Intent(mContext, LibraryRenewBooks.class); //startActivity(intent); } }); loanRenewSelectedBooksButton.setEnabled(false); loanRenewSelectedBooksButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { renewSelectedBooks(); } }); loanDoneButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { showHideRenewBooks(); } }); } private void showHideRenewBooks() { int currentMode = LibraryYourAccount.getMode(); Log.d(TAG,"currentMode = " + currentMode); if (currentMode == LibraryYourAccount.LOAN_MODE) { loansButtonRow.setVisibility(View.GONE); renewButtonRow.setVisibility(View.VISIBLE); // Hide tabs tabHost.getTabWidget().setVisibility(View.GONE); LibraryYourAccount.setMode(LibraryYourAccount.RENEW_MODE); } else { doneButtonRow.setVisibility(View.GONE); renewButtonRow.setVisibility(View.GONE); loansButtonRow.setVisibility(View.VISIBLE); // Show Tabs tabHost.getTabWidget().setVisibility(View.VISIBLE); if (currentMode == LibraryYourAccount.RENEW_RESULTS_MODE) { loanListView.setAdapter(libraryLoanAdapter); libraryLoanAdapter.setLookupHandler(loanListView, null); } LibraryYourAccount.setMode(LibraryYourAccount.LOAN_MODE); } Log.d(TAG,"mode now = " + LibraryYourAccount.getMode()); libraryLoanAdapter.notifyDataSetChanged(); } // Renew Selected Books private void renewSelectedBooks() { String barcodes = ""; for (int b = 0; b < LibraryYourAccount.getLoanData().getLoans().size(); b++) { LoanListItem book = LibraryYourAccount.getLoanData().getLoans().get(b); if (book.isRenewBook()) { if (barcodes.length() > 0) { barcodes = barcodes + " "; } barcodes = barcodes + book.getBarcode(); } } mLoanResults.setVisibility(View.GONE); loanLoadingView.setVisibility(View.VISIBLE); loanLoadingView.showLoading(); LibraryModel.renewBook(this, renewBooksHandler, barcodes); } // TAB LOADING METHODS public void loadLoans() { mLoanResults.setVisibility(View.GONE); loanLoadingView.setVisibility(View.VISIBLE); loanLoadingView.showLoading(); LibraryModel.fetchLoanDetail(this, loansUiHandler); } public void loadFines() { mFineResults.setVisibility(View.GONE); fineLoadingView.setVisibility(View.VISIBLE); fineLoadingView.showLoading(); LibraryModel.fetchFineDetail(this, finesUiHandler); } public void loadHolds() { mHoldResults.setVisibility(View.GONE); holdLoadingView.setVisibility(View.VISIBLE); holdLoadingView.showLoading(); LibraryModel.fetchHoldDetail(this, holdsUiHandler); } // END TAB LOADING METHODS private Handler loansUiHandler = new Handler() { @Override public void handleMessage(Message msg) { Log.d(TAG,"handleMessage"); loanLoadingView.setVisibility(View.GONE); if (msg.arg1 == MobileWebApi.SUCCESS) { Log.d(TAG,"MobileWebApi success"); LoanData loanData = (LoanData)msg.obj; LibraryYourAccount.setLoanData((LoanData)msg.obj); String loanOverdueText = ""; if (loanData.getNumOverdue() == 1) { loanOverdueText = "\n" + loanData.getNumOverdue() + " is overdue."; } else if (loanData.getNumOverdue() > 1){ loanOverdueText = "\n" + loanData.getNumOverdue() + " are overdue."; } loanStatusTV.setText("You have " + loanData.getNumLoan() + " items on loan." + loanOverdueText); loanRenewBooksButton.setEnabled(loanData.getNumLoan() > 0); final ArrayList<LoanListItem> results = loanData.getLoans(); libraryLoanAdapter = new LibraryLoanAdapter(results); loanListView.setAdapter(libraryLoanAdapter); libraryLoanAdapter.setLookupHandler(loanListView, null); mLoanResults.setVisibility(View.VISIBLE); } else if (msg.arg1 == MobileWebApi.ERROR) { loanLoadingView.showError(); } else if (msg.arg1 == MobileWebApi.CANCELLED) { finish(); } } }; private Handler renewBooksHandler = new Handler() { @Override public void handleMessage(Message msg) { Log.d(TAG,"handleMessage"); loanLoadingView.setVisibility(View.GONE); setMode(RENEW_RESULTS_MODE); if (msg.arg1 == MobileWebApi.SUCCESS) { Log.d(TAG,"MobileWebApi success"); RenewBookResponse renewBookResponse = (RenewBookResponse)msg.obj; final ArrayList<RenewResponseItem> results = renewBookResponse.getRenewResponse(); LibraryRenewBookAdapter adapter = new LibraryRenewBookAdapter(results); loanListView.setAdapter(adapter); adapter.setLookupHandler(loanListView, null); mLoanResults.setVisibility(View.VISIBLE); int numBooks = 0; int numSuccess = 0; int numErrors = 0; numBooks = renewBookResponse.getRenewResponse().size(); Log.d(TAG,"numBooks = " + numBooks); for (int b = 0; b < numBooks; b++) { RenewResponseItem book = (RenewResponseItem)renewBookResponse.getRenewResponse().get(b); Log.d(TAG,"reply = " + book.getReply()); Log.d(TAG,"error = " + book.getErrorMsg()); Log.d(TAG,"book = " + book.getTitle()); if (book.getReply().equalsIgnoreCase(LibraryYourAccount.REPLY_OK)) { numSuccess++; } if (book.getErrorMsg().length() > 0) { numErrors++; } } // Set renew errors messages if (numErrors > 0) { renewStatusError.setVisibility(View.VISIBLE); renewStatusErrorTV.setText(numErrors + " could not be renewed"); } else { renewStatusError.setVisibility(View.GONE); } // Set renew success messages if (numSuccess > 0) { renewStatusSuccess.setVisibility(View.VISIBLE); if (numSuccess > 1) { renewStatusSuccessTV.setText(numSuccess + " items were renewed"); } else { renewStatusSuccessTV.setText(numSuccess + " item was renewed"); } } else { renewStatusSuccess.setVisibility(View.GONE); } renewButtonRow.setVisibility(View.GONE); doneButtonRow.setVisibility(View.VISIBLE); mLoanResults.setVisibility(View.VISIBLE); } else if (msg.arg1 == MobileWebApi.ERROR) { loanLoadingView.showError(); } else if (msg.arg1 == MobileWebApi.CANCELLED) { loanLoadingView.showError(); } } }; private Handler finesUiHandler = new Handler() { @Override public void handleMessage(Message msg) { Log.d(TAG,"handleMessage"); fineLoadingView.setVisibility(View.GONE); if (msg.arg1 == MobileWebApi.SUCCESS) { Log.d(TAG,"MobileWebApi success"); FineData fineData = (FineData)msg.obj; LibraryFines.setFineData((FineData)msg.obj); Date date = new Date(); DateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy"); fineBalanceTV.setText("Balance as of " + dateFormat.format(date) + ": " + fineData.getBalance()); fineStatusTV.setText("Payable at any MIT library service desk.\nTechCASH accepted only at Hayden Library."); final ArrayList<FineListItem> results = fineData.getFines(); LibraryFineAdapter adapter = new LibraryFineAdapter(results); fineListView.setAdapter(adapter); adapter.setLookupHandler(fineListView, null); mFineResults.setVisibility(View.VISIBLE); } else if (msg.arg1 == MobileWebApi.ERROR) { fineLoadingView.showError(); } else if (msg.arg1 == MobileWebApi.CANCELLED) { fineLoadingView.showError(); } } }; private Handler holdsUiHandler = new Handler() { @Override public void handleMessage(Message msg) { Log.d(TAG,"handleMessage"); holdLoadingView.setVisibility(View.GONE); if (msg.arg1 == MobileWebApi.SUCCESS) { HoldData holdData = (HoldData)msg.obj; LibraryYourAccount.setHoldData((HoldData)msg.obj); String holdReadyString = ""; if (holdData.getNumReady() == 1) { holdReadyString = "\n" + holdData.getNumReady() + " is ready for pickup."; } else { holdReadyString = "\n" + holdData.getNumReady() + " are ready for pickup."; } holdStatusTV.setText("You have " + holdData.getNumRequest() + " hold requests." + holdReadyString); final ArrayList<HoldListItem> results = holdData.getHolds(); LibraryHoldAdapter adapter = new LibraryHoldAdapter(results); holdListView.setAdapter(adapter); adapter.setLookupHandler(holdListView, null); mHoldResults.setVisibility(View.VISIBLE); } else if (msg.arg1 == MobileWebApi.ERROR) { holdLoadingView.showError(); } else if (msg.arg1 == MobileWebApi.CANCELLED) { holdLoadingView.showError(); } } }; // END UI HANDLERS // ARRAY ADAPTERS // LIBRARY LOANS ADAPTER private class LibraryLoanAdapter extends SimpleArrayAdapter<LoanListItem> { public LibraryLoanAdapter(List<LoanListItem> items) { super(LibraryYourAccount.this, items, R.layout.library_loan_action_row); } public void setLookupHandler(ListView listView, final String extras) { setOnItemClickListener(listView, new SimpleArrayAdapter.OnItemClickListener<LoanListItem>() { @Override public void onItemSelected(LoanListItem item) { // Log.d(TAG,item.getTitle() + " clicked"); if (LibraryYourAccount.getMode() == LibraryYourAccount.LOAN_MODE) { Intent intent = new Intent(mContext, LibraryLoanDetail.class); intent.putExtra("index", item.getIndex()); startActivity(intent); } else { // renew mode, toggle checkbox boolean renewBook = ((LoanListItem)loanData.getLoans().get(item.getIndex())).isRenewBook(); ((LoanListItem)loanData.getLoans().get(item.getIndex())).setRenewBook(!renewBook); //libraryLoanAdapter = new LibraryLoanAdapter(loanData.getLoans()); // enable/disable renew butto boolean anyChecked = false; for (int i = 0; i < LibraryYourAccount.getLoanData().getLoans().size(); i++) { LoanListItem book = LibraryYourAccount.getLoanData().getLoans().get(i); if (book.isRenewBook()) { anyChecked = true; break; } } loanRenewSelectedBooksButton.setEnabled(anyChecked); libraryLoanAdapter.notifyDataSetChanged(); } } }); } @Override public void updateView(LoanListItem item, View view) { Log.d(TAG,"update view " + item.getIndex()); // Title loanTitleTV = (TextView)view.findViewById(R.id.loanTitleTV); if (!item.getTitle().equalsIgnoreCase("")) { loanTitleTV.setText(item.getTitle()); } else { loanTitleTV.setVisibility(View.GONE); } // Year + Author loanAuthorTV = (TextView)view.findViewById(R.id.loanAuthorTV); if (!item.getAuthor().equalsIgnoreCase("") || !item.getYear().equalsIgnoreCase("")) { loanAuthorTV.setText(item.getYear() + "; " + item.getAuthor()); } else { loanAuthorTV.setVisibility(View.GONE); } // Status + Icon loanStatusTV = (TextView)view.findViewById(R.id.loanStatusTV); loanStatusIcon = (ImageView)view.findViewById(R.id.loanStatusIcon); String statusText = ""; if (item.isHasHold()) { statusText = "Item has holds\n"; } statusText += Html.fromHtml(item.getDueText()); loanStatusTV.setText(statusText); if (item.isOverdue() || item.isLongOverdue()) { loanStatusTV.setTextColor(Color.RED); loanStatusIcon.setImageResource(R.drawable.status_alert); loanStatusIcon.setVisibility(View.VISIBLE); } else { loanStatusTV.setTextColor(getResources().getColor(R.color.libraries_gray)); loanStatusIcon.setVisibility(View.GONE); } // Renew Book Checkbox cb = (CheckBox)view.findViewById(R.id.renewBookCheckbox); cb.setTag(item.getIndex()); // Check the box if renewBook is true in the corresponding item if (((LoanListItem)loanData.getLoans().get(item.getIndex())).isRenewBook()) { cb.setChecked(true); } else { cb.setChecked(false); } Log.d(TAG,"update view - loan mode = " + LibraryYourAccount.getMode()); if (LibraryYourAccount.getMode() == LibraryYourAccount.RENEW_MODE) { cb.setVisibility(View.VISIBLE); } else { cb.setVisibility(View.GONE); } } } // LibraryFineAdapter private class LibraryFineAdapter extends SimpleArrayAdapter<FineListItem> { public LibraryFineAdapter(ArrayList<FineListItem> results) { super(LibraryYourAccount.this, results, R.layout.library_fine_action_row); } public void setLookupHandler(ListView listView, final String extras) { setOnItemClickListener(listView, new SimpleArrayAdapter.OnItemClickListener<FineListItem>() { @Override public void onItemSelected(FineListItem item) { Log.d(TAG,item.getTitle() + " clicked"); Intent intent = new Intent(mContext, LibraryFineDetail.class); intent.putExtra("index", item.getIndex()); startActivity(intent); } }); } @Override public void updateView(FineListItem item, View view) { // Display Amount fineDisplayAmountTV = (TextView)view.findViewById(R.id.fineDisplayAmountTV); fineDisplayAmountTV.setText(item.getDisplayAmount()); // Title fineTitleTV = (TextView)view.findViewById(R.id.fineTitleTV); fineTitleTV.setText(item.getTitle()); // Year + Author fineAuthorTV = (TextView)view.findViewById(R.id.fineAuthorTV); if (!item.getAuthor().equalsIgnoreCase("") || !item.getYear().equalsIgnoreCase("")) { fineAuthorTV.setText(item.getYear() + "; " + item.getAuthor()); } else { fineAuthorTV.setVisibility(View.GONE); } // Fine Date fineFineDateTV = (TextView)view.findViewById(R.id.fineFineDateTV); fineFineDateTV.setText("Fined " + item.getFineDate()); } } // LIBRARY HOLD ADAPTER private class LibraryHoldAdapter extends SimpleArrayAdapter<HoldListItem> { public LibraryHoldAdapter(List<HoldListItem> items) { super(LibraryYourAccount.this, items, R.layout.library_hold_action_row); } public void setLookupHandler(ListView listView, final String extras) { setOnItemClickListener(listView, new SimpleArrayAdapter.OnItemClickListener<HoldListItem>() { @Override public void onItemSelected(HoldListItem item) { Intent intent = new Intent(mContext, LibraryHoldDetail.class); intent.putExtra("index", item.getIndex()); startActivity(intent); } }); } @Override public void updateView(HoldListItem item, View view) { Log.d(TAG,"title = " + item.getTitle()); Log.d(TAG,"author = " + item.getAuthor()); Log.d(TAG,"status = " + item.getStatus()); Log.d(TAG,"pickup location = " + item.getPickupLocation()); // Title holdTitleTV = (TextView)view.findViewById(R.id.holdTitleTV); if (!item.getTitle().equalsIgnoreCase("")) { holdTitleTV.setText(item.getTitle()); } else { holdTitleTV.setVisibility(View.GONE); } // Year + Author holdAuthorTV = (TextView)view.findViewById(R.id.holdAuthorTV); if (!item.getAuthor().equalsIgnoreCase("")) { holdAuthorTV.setText(item.getYear() + "; " + item.getAuthor()); } else { holdAuthorTV.setVisibility(View.GONE); } // Status Icon holdStatusIcon = (ImageView)view.findViewById(R.id.holdStatusIcon); // Status holdStatusTV = (TextView)view.findViewById(R.id.holdStatusTV); if (!item.getStatus().equalsIgnoreCase("")) { holdStatusTV.setText(item.getStatus()); holdStatusTV.setVisibility(View.VISIBLE); } else { holdStatusTV.setVisibility(View.GONE); } // Pickup Location holdPickupLocationTV = (TextView)view.findViewById(R.id.holdPickupLocationTV); if (!item.getPickupLocation().equalsIgnoreCase("")) { holdPickupLocationTV.setText("Pick up at " + item.getPickupLocation()); holdPickupLocationTV.setVisibility(View.VISIBLE); } else { holdPickupLocationTV.setVisibility(View.GONE); } // Set color and icon based on Status value if (item.getReady().equalsIgnoreCase("TRUE")) { Log.d(TAG,"ready for " + item.getTitle() + " = " + item.getReady()); holdStatusIcon.setVisibility(View.VISIBLE); int holdReadyTextColor = getResources().getColor(R.color.hold_ready_text); holdStatusTV.setTextColor(holdReadyTextColor); holdPickupLocationTV.setTextColor(holdReadyTextColor); holdPickupLocationTV.setVisibility(View.VISIBLE); Log.d(TAG,"setting status to green, " + R.color.hold_ready_text); Log.d(TAG,"holdStatusTV = " + holdStatusTV.getCurrentTextColor()); } else { holdStatusIcon.setVisibility(View.GONE); holdStatusTV.setTextColor(getResources().getColor(R.color.libraries_gray)); holdPickupLocationTV.setTextColor(getResources().getColor(R.color.libraries_gray)); holdPickupLocationTV.setVisibility(View.GONE); } } } // Library Renew Book Adapter private class LibraryRenewBookAdapter extends SimpleArrayAdapter<RenewResponseItem> { public LibraryRenewBookAdapter(List<RenewResponseItem> items) { super(LibraryYourAccount.this, items, R.layout.library_loan_action_row); } public void setLookupHandler(ListView listView, final String extras) { setOnItemClickListener(listView, new SimpleArrayAdapter.OnItemClickListener<RenewResponseItem>() { @Override public void onItemSelected(RenewResponseItem item) { Log.d(TAG,item.getTitle() + " clicked"); } }); } @Override public void updateView(RenewResponseItem item, View view) { // Title loanTitleTV = (TextView)view.findViewById(R.id.loanTitleTV); if (!item.getTitle().equalsIgnoreCase("")) { loanTitleTV.setText(item.getTitle()); } else { loanTitleTV.setVisibility(View.GONE); } // Year + Author loanAuthorTV = (TextView)view.findViewById(R.id.loanAuthorTV); if (!item.getAuthor().equalsIgnoreCase("") || !item.getYear().equalsIgnoreCase("")) { loanAuthorTV.setText(item.getYear() + "; " + item.getAuthor()); } else { loanAuthorTV.setVisibility(View.GONE); } // Status loanStatusIcon = (ImageView)view.findViewById(R.id.loanStatusIcon); loanStatusIcon.setImageResource(R.drawable.status_alert); loanStatusTV = (TextView)view.findViewById(R.id.loanStatusTV); loanStatusTV.setText(Html.fromHtml(item.getDueText())); if (item.isOverdue() || item.isLongOverdue()) { loanStatusTV.setTextColor(Color.RED); loanStatusIcon.setVisibility(View.VISIBLE); } else { loanStatusTV.setTextColor(getResources().getColor(R.color.contents_text)); loanStatusIcon.setVisibility(View.GONE); } } } // END ARRAY ADAPTERS @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { if (getMode() == RENEW_MODE || getMode() == RENEW_RESULTS_MODE) { if (loanLoadingView.getVisibility() == View.GONE) { showHideRenewBooks(); } return true; } } return super.onKeyDown(keyCode, event); } @Override public boolean isModuleHomeActivity() { return false; } @Override protected NewModule getNewModule() { return new LibrariesModule(); } @Override protected boolean isScrollable() { return false; } @Override protected void onOptionSelected(String optionId) { } }