无法通过需求JAVA ANDROID STUDIO来显示数据库sqlite中的数据

时间:2016-02-27 09:31:35

标签: java android database sqlite listview

我无法将数据显示在ListView上。我用一个查询创建了数据库处理程序:" SELECT * FROM TABLE_NAME WHERE COLUMN_USERNAME ='" +用户名+"'"。我想显示具有我想要的用户名的数据。但我似乎无法让它工作。这是代码。

具有列表视图的ViewEvent类

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);
    }
}

这是我的DataBaseHelperEvent类

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);
    }


}

所以每当我展示我的ListView时,它都不会显示任何内容。如何显示只有我想要的特定用户名的数据?谢谢!抱歉我的英文不好

0 个答案:

没有答案