ok I have figured out how i can get different actions but i have
another problem now.
I have, like i already said, a list of flights..
when i click on a item in the list :
@Override
protected void onListItemClick(ListView l, View v, int position,
long id) {
Intent intent = new Intent(TravelPlannerHome.this,
FlightView.class);
intent.putExtra(FlightDbAdapter.KEY_ROWID, id);
startActivityForResult(intent, ACTIVITY_VIEW);;
super.onListItemClick(l, v, position, id);
}
I have to go to the activity FlightView:
Problem now is that he passes a rowid (unique id for database) but i
got this error:
03-25 00:18:19.742: ERROR/AndroidRuntime(3947): Caused by:
android.database.CursorIndexOutOfBoundsException: Index 0 requested,
with a size of 0
This worked when i hadn't a seperatedlist!
How can i fix this?
package com.ehb.mybuddy.TravelPlanner;
import com.ehb.mybuddy.R;
import com.ehb.mybuddy.TravelPlanner.db.FlightDbAdapter;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.DialogInterface.OnClickListener;
import android.database.Cursor;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.animation.AnimationUtils;
import android.widget.TextView;
import android.widget.ViewFlipper;
public class FlightView extends Activity {
private FlightDbAdapter flightDbAdapter;
private Long mRowId;
//TEXTVIEWS
private TextView flightno;
private TextView depCity;
private TextView depDate;
private TextView arrCity;
private TextView arrDate;
private TextView aircraft;
private TextView ticketno;
private TextView seat;
private TextView reminder;
private static final int DELETE_ID = Menu.FIRST;
private static final int UPDATE_ID = Menu.FIRST + 1;
private static final int TRAVELPLANNER_HOME_ID = Menu.FIRST + 2;
private static final int ACTIVITY_VIEW= 1;
private static final int ACTIVITY_EDIT = 2;
private ViewFlipper viewFlipper;
private TextView animationText1;
private TextView animationText2;
private TextView animationText3;
private TextView animationText4;
private Cursor flightCursor;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.flight_view);
mRowId = savedInstanceState != null ? savedInstanceState.getLong
(FlightDbAdapter.KEY_ROWID) : null;
if (mRowId == null){
Bundle extras = getIntent().getExtras();
mRowId = extras != null ? extras.getLong
(FlightDbAdapter.KEY_ROWID) : null;
}
flightno = (TextView) findViewById(R.id.viewFlightno2);
depCity = (TextView) findViewById(R.id.viewDepCity2);
depDate = (TextView) findViewById(R.id.viewDepDate2);
arrCity = (TextView) findViewById(R.id.viewArrCity2);
arrDate = (TextView) findViewById(R.id.viewArrDate2);
aircraft = (TextView) findViewById(R.id.viewAircraft2);
ticketno = (TextView) findViewById(R.id.viewTicketno2);
seat = (TextView) findViewById(R.id.viewSeat2);
reminder = (TextView) findViewById(R.id.viewReminder2);
//FLIPPER
viewFlipper = (ViewFlipper) findViewById(R.id.flipper);
animationText1 = (TextView) findViewById(R.id.animationTekst1);
animationText2 = (TextView) findViewById(R.id.animationTekst2);
animationText3 = (TextView) findViewById(R.id.animationTekst3);
animationText4 = (TextView) findViewById(R.id.animationTekst4);
flightDbAdapter = new FlightDbAdapter(this);
flightDbAdapter.open();
fillInText();
}
private void startFlightFlipper() {
viewFlipper.startFlipping();
viewFlipper.setInAnimation(AnimationUtils.loadAnimation(this,
R.anim.push_left_in));
viewFlipper.setOutAnimation(AnimationUtils.loadAnimation
(this,R.anim.push_left_out));
}
@Override
protected void onResume() {
super.onResume();
Cursor c = flightCursor;
fillInText();
}
private void fillInText()
{
if (mRowId != null) {
Cursor flight = flightDbAdapter.fetchFlight(mRowId);
startManagingCursor(flight);
flightno.setText(flight.getString(
flight.getColumnIndexOrThrow
(flightDbAdapter.KEY_FLIGHTNO)));
depCity.setText(flight.getString(
flight.getColumnIndexOrThrow
(flightDbAdapter.KEY_DEPARTURECITY)));
depDate.setText(flight.getString(
flight.getColumnIndexOrThrow
(flightDbAdapter.KEY_DEPARTUREDATE)));
arrCity.setText(flight.getString(
flight.getColumnIndexOrThrow
(flightDbAdapter.KEY_ARRCITY)));
arrDate.setText(flight.getString(
flight.getColumnIndexOrThrow
(flightDbAdapter.KEY_ARRDATE)));
aircraft.setText(flight.getString(
flight.getColumnIndexOrThrow
(flightDbAdapter.KEY_TICKETNO)));
ticketno.setText(flight.getString(
flight.getColumnIndexOrThrow(flightDbAdapter.KEY_SEAT)));
seat.setText(flight.getString(
flight.getColumnIndexOrThrow(flightDbAdapter.KEY_SEAT)));
//reminder.setText(flight.getInt(flight.getColumnIndexOrThrow
(flightDbAdapter.KEY_REMINDER)));
animationText1.setText(flight.getString(
flight.getColumnIndexOrThrow
(flightDbAdapter.KEY_FLIGHTNO)));
animationText2.setText(flight.getString(
flight.getColumnIndexOrThrow
(flightDbAdapter.KEY_DEPARTURECITY)));
animationText3.setText(flight.getString(
flight.getColumnIndexOrThrow
(flightDbAdapter.KEY_ARRCITY)));
startFlightFlipper();
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
menu.add(0,DELETE_ID, 2, R.string.menu_delete).setIcon
(R.drawable.remove);
menu.add(1, UPDATE_ID, 3, R.string.menu_update).setIcon
(R.drawable.icon_edit);
menu.add(1, TRAVELPLANNER_HOME_ID, 1, "Travel Planner
Home").setIcon
(R.drawable.icon_home);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case DELETE_ID:
deleteFlight();
break;
case UPDATE_ID:
finish();
Intent intentUpdate = new Intent(this,
FlightEdit.class);
intentUpdate.putExtra(flightDbAdapter.KEY_ROWID,mRowId);
startActivityForResult(intentUpdate, ACTIVITY_EDIT);
break;
case TRAVELPLANNER_HOME_ID:
/*Intent intentHome = new Intent(this,
TravelPlannerHome.class);
startActivity(intentHome);*/
finish();
default:
break;
}
return super.onOptionsItemSelected(item);
}
private void deleteFlight() {
new AlertDialog.Builder(this)
.setTitle(R.string.delete_flight_title)
.setMessage(R.string.delete_flight)
.setPositiveButton(R.string.yes_button, new OnClickListener() {
public void onClick(DialogInterface dialog, int arg1) {
flightDbAdapter.deleteFlight(mRowId);
Intent intent = new Intent (FlightView.this,
TravelPlannerHome.class);
startActivityForResult(intent, ACTIVITY_VIEW);
}
}).setNegativeButton(R.string.no_button, null).show();
}
}
On Mar 24, 10:12 pm, Wouter <[email protected]> wrote:
> Ok..
>
> But what can i do with getItem like you said?
>
> On Mar 24, 9:55 pm, Mark Murphy <[email protected]> wrote:
>
> > If you cannot figure out how to use the SeparatedListAdapter, or where
> > it may need to be extended to help you achieve your ends, find some
> > other UI pattern you are more comfortable with.
>
> > Wouter wrote:
> > > How? if i want to delete a item in my list what do i have to do with
> > > getItem?
> > > for example I have a delete option in my OptionsMenu:
>
> > > This was my original code:
> > > public boolean onOptionsItemSelected(MenuItem item) {
> > > switch (item.getItemId()) {
> > > case DELETE_ID:
>
> > > Cursor flightsCursor = flightDbHelper.fetchAllFlights();
> > > long position = listView.getSelectedItemId();
> > > flightsCursor.moveToPosition((int) position);
> > > flightDbHelper.deleteFlight(position);
> > > fillData();
>
> > > break;
> > > }
>
> > > but now i have to detect which list it was so i have to delete it from
> > > my flight database or hotel database!
> > > How can i do that?
>
> > > On Mar 24, 9:34 pm, Mark Murphy <[email protected]> wrote:
> > >> Wouter wrote:
> > >>> Ok i have integrated it now in my applications. It works now to show
> > >>> the 2 lists as one 1 list with seperated headers.
> > >>> But now, how can i determine which list is was, to integrate my
> > >>> seperated actions?
> > >>> I have a lists for flights and hotels (for example). When i click on a
> > >>> item in the flight list i have to open another activity then when I
> > >>> click on a item in the hotel list!
> > >> The same way you do with any list: call getItem() on the adapter.
>
> > >> --
> > >> Mark Murphy (a Commons Guy)http://commonsware.com
> > >> Android App Developer Training:http://commonsware.com/training.html
>
> > --
> > Mark Murphy (a Commons Guy)http://commonsware.com
> > Android App Developer Training:http://commonsware.com/training.html
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
-~----------~----~----~----~------~----~------~--~---