This is the AccountListView, it retrieve and displays data that i have been added in database in a list view, i have added cash and bank account, when i clicked on cash in the list view it open the transaction intent, which has a spinner on which cash and bank has been added, i want it to display the data that i have clicked on the list view. Note that for the balance of cash and bank display succesfully only for the spinner.
public class AccountListActivity extends Activity implements OnClickListener, OnItemClickListener {
private ListView AccountListView;
private Button addNewAccountButton;
private ListAdapter AccountListAdapter;
private ArrayList<AccountDetails> pojoArrayList;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.list);
AccountListView = (ListView) findViewById(R.id.AccountListView);
AccountListView.setOnItemClickListener(this);
registerForContextMenu(AccountListView);
addNewAccountButton = (Button) findViewById(R.id.namesListViewAddButton);
addNewAccountButton.setOnClickListener(this);
pojoArrayList = new ArrayList<AccountDetails>();
AccountListAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, populateList());
AccountListView.setAdapter(AccountListAdapter);
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
menu.setHeaderTitle("Menu");
menu.add(0, v.getId(), 0, "Update");
menu.add(0, v.getId(), 0, "Delete");
menu.add(0, v.getId(), 0, "Cancel");
}
public List<String> populateList(){
List<String> AccountList = new ArrayList<String>();
DatabaseAdapter openHelperClass = new DatabaseAdapter(this);
SQLiteDatabase sqliteDatabase = openHelperClass.getReadableDatabase();
Cursor cursor = sqliteDatabase.query(DatabaseAdapter.TABLE_ACCOUNT, null, null, null, null, null, null);
startManagingCursor(cursor);
while (cursor.moveToNext()) {
String aBNAME = cursor.getString(cursor.getColumnIndex(DatabaseAdapter.KEY_BANKNAME));
String aBTYPE = cursor.getString(cursor.getColumnIndex(DatabaseAdapter.KEY_TYPE));
String aAccNum = cursor.getString(cursor.getColumnIndex(DatabaseAdapter.KEY_ACCNUM));
String aBal = cursor.getString(cursor.getColumnIndex(DatabaseAdapter.KEY_BALANCE));
String aEDate = cursor.getString(cursor.getColumnIndex(DatabaseAdapter.KEY_EXPIRYDATE));
AccountDetails ugPojoClass = new AccountDetails();
ugPojoClass.setaBankName(aBNAME);
ugPojoClass.setaAccountType(aBTYPE);
ugPojoClass.setaAccountNumber(aAccNum);
ugPojoClass.setaBalance(aBal);
ugPojoClass.setaDate(aEDate);
pojoArrayList.add(ugPojoClass);
AccountList.add(aBNAME);
}
sqliteDatabase.close();
return AccountList;
}
@Override
public void onItemClick( AdapterView<?> arg0, View arg1, int arg2, long arg3) {
Toast.makeText(getApplicationContext(), "Clicked on :" + arg2, Toast.LENGTH_SHORT).show();
Intent updateDeleteAccountIntent = new Intent(this, Transaction.class);
AccountDetails clickedObject = pojoArrayList.get(arg2);
Bundle dataBundle = new Bundle();
dataBundle.putString("clickedBankName", clickedObject.getaBankName());
dataBundle.putString("clickedBankType", clickedObject.getaAccountType());
dataBundle.putString("clickedBankNumber", clickedObject.getaAccountNumber());
dataBundle.putString("clickedBankBalance", clickedObject.getaBalance());
dataBundle.putString("clickedExpiryDate", clickedObject.getaDate());
updateDeleteAccountIntent.putExtras(dataBundle);
startActivity(updateDeleteAccountIntent);
}
When the transaction intent is open it take value of the Transaction.java
public class Transaction extends Activity implements OnClickListener{
private Spinner Category, Account, typerp;
private TextView tvSaveNew, tvDisplayDate;
private EditText ItemName, Amount, Notes;
private EditText Balance, Result;
private ImageButton TransDate, ImageButton1;
private Button save, newt;
private String bundledBankName;
private String bundledBankType;
private String bundledBankNumber;
private String bundledBankBalance;
private String bundledBankDate;
private String BankNameValue;
private String NewBankBalanceValue;
private String BankTypeValue;
private String BankNumberValue;
private String BankBalanceValue;
private String BankDateValue;
private int year;
private int month;
private int day;
static final int DATE_DIALOG_ID = 999;
private ArrayList<TransactionDetails> TransactionDetailsObjArrayList;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.transaction);
save = (Button) findViewById(R.id.TbtnSave);
newt = (Button) findViewById(R.id.btnNewTran);
TransDate = (ImageButton) findViewById(R.id.transDate);
Category = (Spinner) findViewById(R.id.Tcategory);
Account = (Spinner) findViewById(R.id.TAccount);
typerp = (Spinner) findViewById(R.id.TypeR);
ItemName = (EditText) findViewById(R.id.TransItemName);
Amount = (EditText) findViewById(R.id.TransAmount);
Notes = (EditText) findViewById(R.id.tranNote);
Balance = (EditText) findViewById(R.id.RetrieveBalance);
Result = (EditText) findViewById(R.id.ResultBalance);
tvDisplayDate = (TextView) findViewById(R.id.ttvDisplayDate);
save.setOnClickListener(this);
newt.setOnClickListener(this);
setCurrentDateOnView();
TransDate.setOnClickListener(this);
TransactionDetailsObjArrayList = new ArrayList<TransactionDetails>();
loadSpinnerData();
Bundle takeBundledData = getIntent().getExtras();
bundledBankName = takeBundledData.getString("clickedBankName");
bundledBankBalance = takeBundledData.getString("clickedBankBalance");
Account.setSelection(0);
Balance.setText(bundledBankBalance);
}
Tested this just a while ago with a spinner that contains a list of strings, seems to work fine. Might help someone.
public void setSpinText(Spinner spin, String text)
{
for(int i= 0; i < spin.getAdapter().getCount(); i++)
{
if(spin.getAdapter().getItem(i).toString().contains(text))
{
spin.setSelection(i);
}
}
}
:)
If you are using Kotlin, this is an extension fucntion to set the text of spinner based on user3786552's answer
fun Spinner.setSpinnerText(text: String) {
for (i in 0 until this.adapter.count) {
if (this.adapter.getItem(i).toString().contains(text)) {
this.setSelection(i)
}
}
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With