package oak.demo.widget; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.Toast; import oak.demo.OakDemoActivity; import oak.demo.R; import oak.widget.spreadsheetview.SpreadsheetRow; import oak.widget.spreadsheetview.SpreadsheetView; import java.util.Comparator; public class SpreadsheetViewActivity extends OakDemoActivity { SpreadsheetView mSpreadsheetView; final static int NUM_OBJECTS = 100; final static int NUM_VALUES = 100; final static float FOOTER_HEIGHT = 75; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.sticky_spreadsheet_demo); mSpreadsheetView = (SpreadsheetView) findViewById(R.id.spreadsheet_table); setup(); Button incStickyButton = (Button) findViewById(R.id.spreadsheet_inc_sticky); incStickyButton.setText("+"); Button decStickyButton = (Button) findViewById(R.id.spreadsheet_dec_sticky); decStickyButton.setText("-"); incStickyButton.setOnClickListener(new Button.OnClickListener() { @Override public void onClick(View v) { mSpreadsheetView.setNumberStickyColumns(mSpreadsheetView.getNumberStickyColumns() + 1); } }); decStickyButton.setOnClickListener(new Button.OnClickListener() { @Override public void onClick(View v) { mSpreadsheetView.setNumberStickyColumns(mSpreadsheetView.getNumberStickyColumns() - 1); } }); Button hideFooterButton = (Button) findViewById(R.id.spreadsheet_hide_footer); hideFooterButton.setOnClickListener(new Button.OnClickListener() { @Override public void onClick(View v) { if (mSpreadsheetView.getStickyFooterHeight() == 0f) { mSpreadsheetView.setStickyFooterHeight(FOOTER_HEIGHT); ((Button) v).setText("Hide Footer"); } else { mSpreadsheetView.setStickyFooterHeight(0f); ((Button) v).setText("Show Footer"); } } }); } private void setup() { SpreadsheetRow[] objects = new SpreadsheetRow[NUM_OBJECTS]; for (int i = 0; i < NUM_OBJECTS; i++) { String[] values = new String[NUM_VALUES]; values[0] = "object " + (i + 1); for (int j = 1; j < NUM_VALUES; j++) { values[j] = ""+NUM_VALUES*i + j; } objects[i] = new SpreadsheetRow(values); } String[] headers = new String[NUM_VALUES]; String[] footers = new String[NUM_VALUES]; headers[0] = "Name"; footers[0] = ""; for (int j = 1; j < NUM_VALUES; j++) { headers[j] = "value " + j; footers[j] = "footer " + j; } mSpreadsheetView.setData(objects, headers); mSpreadsheetView.setFooters(footers,FOOTER_HEIGHT); mSpreadsheetView.setOnHeaderClickListener(new SpreadsheetView.OnHeaderClickListener() { @Override public void headerClick(final int valueIndex) { //mSpreadsheetView.selectColumn(valueIndex, !mSpreadsheetView.isHeaderSelected(valueIndex)); if (mSpreadsheetView.getSortedStatus(valueIndex)==SpreadsheetView.SORTED_DESCENDING){ mSpreadsheetView.sortDataAscBy(valueIndex, new Comparator<SpreadsheetRow>(){ @Override public int compare(SpreadsheetRow a, SpreadsheetRow b) { boolean aIsNum = true; boolean bIsNum = true; Integer numberValueA = 0; Integer numberValueB = 0; try { numberValueA = Integer.parseInt(a.getValueAt(valueIndex)); } catch(NumberFormatException e) { aIsNum = false; } try { numberValueB = Integer.parseInt(b.getValueAt(valueIndex)); } catch(NumberFormatException e) { bIsNum = false; } if (!bIsNum && !aIsNum){ return a.getValueAt(valueIndex).compareTo(b.getValueAt(valueIndex)); } return numberValueA.compareTo(numberValueB); } }); } else { mSpreadsheetView.sortDataDescBy(valueIndex, new Comparator<SpreadsheetRow>() { @Override public int compare(SpreadsheetRow a, SpreadsheetRow b) { boolean aIsNum = true; boolean bIsNum = true; Integer numberValueA = 0; Integer numberValueB = 0; try { numberValueA = Integer.parseInt(a.getValueAt(valueIndex)); } catch (NumberFormatException e) { aIsNum = false; } try { numberValueB = Integer.parseInt(b.getValueAt(valueIndex)); } catch (NumberFormatException e) { bIsNum = false; } if (!bIsNum && !aIsNum) { return -1 * a.getValueAt(valueIndex).compareTo(b.getValueAt(valueIndex)); } return -1 * numberValueA.compareTo(numberValueB); } }); } if (valueIndex < mSpreadsheetView.getNumberStickyColumns()) { Toast.makeText(mSpreadsheetView.getContext(), "Clicked Sticky Header " + mSpreadsheetView.getHeaderAt(valueIndex), Toast.LENGTH_SHORT).show(); } else { Toast.makeText(mSpreadsheetView.getContext(), "Clicked Header " + mSpreadsheetView.getHeaderAt(valueIndex), Toast.LENGTH_SHORT).show(); } } }); mSpreadsheetView.setOnFooterClickListener(new SpreadsheetView.OnFooterClickListener() { @Override public void footerClick(int valueIndex) { if (valueIndex < mSpreadsheetView.getNumberStickyColumns()) { Toast.makeText(mSpreadsheetView.getContext(), "Clicked Sticky Footer " + mSpreadsheetView.getFooterAt(valueIndex), Toast.LENGTH_SHORT).show(); } else { Toast.makeText(mSpreadsheetView.getContext(), "Clicked Footer " + mSpreadsheetView.getFooterAt(valueIndex), Toast.LENGTH_SHORT).show(); } } }); mSpreadsheetView.setOnCellClickListener(new SpreadsheetView.OnCellClickListener() { @Override public void cellClick(int objectIndex, int valueIndex){ if (valueIndex<mSpreadsheetView.getNumberStickyColumns()){ mSpreadsheetView.selectRow(objectIndex, !mSpreadsheetView.isSelected(objectIndex, valueIndex)); } if (valueIndex < mSpreadsheetView.getNumberStickyColumns()) { Toast.makeText(mSpreadsheetView.getContext(), "Clicked Sticky Cell " + mSpreadsheetView.getHeaderAt(valueIndex) + ": " + mSpreadsheetView.getRowAt(objectIndex).getValueAt(valueIndex), Toast.LENGTH_SHORT) .show(); } else { Toast.makeText( mSpreadsheetView.getContext(), "Clicked Cell " + mSpreadsheetView.getHeaderAt(valueIndex) + ": " + mSpreadsheetView.getRowAt(objectIndex).getValueAt(valueIndex), Toast.LENGTH_SHORT) .show(); } } }); } }