samedi 27 février 2016

can't get to show data from a database sqlite with a requirement JAVA ANDROID STUDIO

i can't get my data to show on my ListView. i created database handler with a query that says: "SELECT * FROM TABLE_NAME WHERE COLUMN_USERNAME = '"+Username+"'". i want to show Data that have the username i want only. But i cant seem to get it work. here is the code.

ViewEvent class with the List View

public class ViewEvent extends Activity {

private static String z = "";

private static final int _EDIT = 0, _DELETE = 1; // constants to be used later
static int longClickedItemIndex;

static List<Event> events = new ArrayList<Event>();
ArrayAdapter<Event> eventsAdapter;
ListView listViewEvents;
static DatabaseHandlerEvent helper;

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.view_event);

    Typeface myTypeFace = Typeface.createFromAsset(getAssets(), "Type Keys Filled.ttf");
    TextView myTextview = (TextView) findViewById(R.id.textViewHead4);
    myTextview.setTypeface(myTypeFace);

    helper = new DatabaseHandlerEvent(getApplicationContext());

    listViewEvents = (ListView) findViewById(R.id.listView);
    registerForContextMenu(listViewEvents);
    listViewEvents.setOnItemLongClickListener(
            new AdapterView.OnItemLongClickListener() {
                @Override
                public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
                    longClickedItemIndex = position;
                    return false;
                }
            }
    );
    populateList();

    SharedPreferences prfs = getSharedPreferences("AUTHENTICATION_FILE_NAME", Context.MODE_PRIVATE);
    String Username = prfs.getString("Username", "");

    if (helper.getEventCount() != 0 && events.size() == 0) {
        events.addAll(helper.getAllEvent(Username));
    }
}

public void registerForContextMenu(View view) {
    view.setOnCreateContextMenuListener(this);
}

public void onButtonClick(View v){
    if(v.getId() == R.id.bSignoutb){
        Toast so = Toast.makeText(ViewEvent.this, "Signing out.. Redirecting to Login Page..." , Toast.LENGTH_SHORT);
        so.show();

        Intent i = new Intent(ViewEvent.this, MainActivity.class);
        startActivity(i);
    }

    if(v.getId() == R.id.Bback){
        Intent i = new Intent(ViewEvent.this, CreateEvent.class);
        startActivity(i);
    }
}


private void populateList() {
    eventsAdapter = new eventListAdapter();
    listViewEvents.setAdapter(eventsAdapter);
}

public class eventListAdapter extends ArrayAdapter<Event> {
    public eventListAdapter() {
        super(ViewEvent.this, R.layout.listview_event, events);
    }

    @Override
    public View getView(int position, View view, ViewGroup parent) {
        if (view == null) {
            view = getLayoutInflater().inflate(R.layout.listview_event, parent, false);
        }


        Event currentEvent = events.get(position);

        TextView name = (TextView) view.findViewById(R.id.textViewEventName);
        name.setText(currentEvent.getName());
        TextView location = (TextView) view.findViewById(R.id.textViewLocation);
        location.setText(currentEvent.getLocation());
        TextView date = (TextView) view.findViewById(R.id.textViewDate);
        date.setText(currentEvent.getDate());
        TextView description = (TextView) view.findViewById(R.id.textViewDescription);
        description.setText(currentEvent.getDescription());
        TextView time = (TextView) view.findViewById(R.id.textViewTime);
        time.setText(currentEvent.getTime());
        TextView testnia = (TextView) view.findViewById(R.id.testnia);
        testnia.setText(currentEvent.getUsername());

        return view;
    }
}

public void onCreateContextMenu(ContextMenu menu, View view, ContextMenu.ContextMenuInfo menuInfo) {
    super.onCreateContextMenu(menu, view, menuInfo);

    menu.setHeaderIcon(R.drawable.huhu);// find a suitable icon
    menu.setHeaderTitle("Event options:");
    menu.add(Menu.NONE, _EDIT, Menu.NONE, "Edit Event");
    menu.add(Menu.NONE, _DELETE, Menu.NONE, "Delete Event");
}

public boolean onContextItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case _EDIT:
            // editing a contact
            Intent editContactIntent = new Intent(getApplicationContext(), EditEvent.class);
            startActivityForResult(editContactIntent, 2); // reqcode=2
            break;
        case _DELETE:
            helper.deleteEvent(events.get(longClickedItemIndex));
            events.remove(longClickedItemIndex);
            eventsAdapter.notifyDataSetChanged();
            break;
    }
    return super.onContextItemSelected(item);
}

}

And this is my DataBaseHelperEvent class

public class DatabaseHandlerEvent extends SQLiteOpenHelper {

static DatabaseHelperUser helper;
 Event event;

private static final int DATABASE_VERSION = 1;
private static final String DATABASE_NAME = "Events";
private static final String TABLE_NAME = "Events";
private static final String COLUMN_ID = "id",
        COLUMN_NAME = "name", COLUMN_LOCATION = "location", COLUMN_DATE = "date",
        COLUMN_TIME ="time", COLUMN_DESCRIPTION = "description", COLUMN_USERNAME = "username";

SQLiteDatabase db;

public DatabaseHandlerEvent(Context context) {
    super(context, DATABASE_NAME, null, DATABASE_VERSION);
}

@Override
public void onCreate(SQLiteDatabase db) {
    db.execSQL("CREATE TABLE " + TABLE_NAME + " (" +
                    COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
                    COLUMN_NAME + " TEXT, " + COLUMN_LOCATION + " TEXT, " +
                    COLUMN_DATE + " TEXT, " + COLUMN_TIME + " TEXT, " +
                    COLUMN_DESCRIPTION + " TEXT, " + COLUMN_USERNAME + " TEXT)"
    );
}

public long createEvent (Event event) {
    db = this.getWritableDatabase();
    ContentValues values = new ContentValues();

    values.put(COLUMN_NAME, event.getName());
    values.put(COLUMN_LOCATION, event.getLocation());
    values.put(COLUMN_DATE, event.getDate());
    values.put(COLUMN_TIME, event.getTime());
    values.put(COLUMN_DESCRIPTION, event.getDescription());
    values.put(COLUMN_USERNAME, event.getUsername());
    long result = db.insert(TABLE_NAME, null, values);
    db.close();
    return result;
}

public int updateEvent(Event event) {
    db = this.getWritableDatabase();
    ContentValues values = new ContentValues();
    values.put(COLUMN_NAME, event.getName());
    values.put(COLUMN_LOCATION, event.getLocation());
    values.put(COLUMN_DATE, event.getDate());
    values.put(COLUMN_TIME, event.getTime());
    values.put(COLUMN_DESCRIPTION, event.getDescription());
    int rowsAffected = db.update(TABLE_NAME, values, COLUMN_ID + "=?",
            new String[]{String.valueOf(event.getId())});
    db.close();
    return rowsAffected;
}

public List<Event> getAllEvent(String Username) {
    List<Event> events = new ArrayList<Event>();

    db = this.getWritableDatabase();
    Cursor cursor = db.rawQuery("SELECT * FROM " + TABLE_NAME +" WHERE "+COLUMN_USERNAME+" = "+ "'"+Username+"'", null);
    if (cursor.moveToFirst()) {
        do {
            events.add(new Event(Integer.parseInt(cursor.getString(0)),
                    cursor.getString(1), cursor.getString(2),
                    cursor.getString(3), cursor.getString(4),
                    cursor.getString(5), cursor.getString(6)));
        } while (cursor.moveToNext());
    }
    cursor.close();
    db.close();
    return events;
}

public int getEventCount() {
    db = this.getReadableDatabase();
    Cursor cursor = db.rawQuery("SELECT * FROM " + TABLE_NAME, null);
    int count = cursor.getCount();
    cursor.close();
    db.close();
    return count;
}

public int deleteEvent(Event event) {
    db = this.getWritableDatabase();
    int rowsAffected = db.delete(TABLE_NAME, COLUMN_ID + "=?",
            new String[]{String.valueOf(event.getId())});
    db.close();
    return rowsAffected;
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    String query = "DROP TABLE IF EXISTS "+TABLE_NAME;
    db.execSQL(query);
    this.onCreate(db);
}

}

So whenever i show my ListView, it will show nothing. How can i show the data that only have a specific username i want? thanks! Sorry for my bad english

Aucun commentaire:

Enregistrer un commentaire