mercredi 23 mars 2016

Having trouble getting my cursor adaptor to display my Sqlite database in list view

I'm having trouble using the SimpleCursorAdapter in order to display data I'm inputting into a SQLite database, and outputting into a list view in a second activity, I feel as if I've done this right and am missing something small.

Activity Main

package com.example.cody.myapplication;



import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Button;
import android.content.Intent;

public class MainActivity extends AppCompatActivity {


    EditText editModule;
    EditText editDay;
    EditText editTime;
    EditText editDuration;
    EditText editType;
    EditText editRoom;
    DBHandler dbHandler;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        editModule = (EditText) findViewById(R.id.editModule);
        editTime = (EditText) findViewById(R.id.editTime);
        editDay = (EditText) findViewById(R.id.editDay);
        editDuration = (EditText) findViewById(R.id.editDuration);
        editType = (EditText) findViewById(R.id.editType);
        dbHandler = new DBHandler(this, null, null, 1);
        openList();
        //printDatabase();
    }

    public void openList()
    {
        Button buttonOpen = (Button) findViewById(R.id.openButton);
        buttonOpen.setOnClickListener(
                    new View.OnClickListener() {
                        public void onClick(View v) {
                            startActivity(new Intent(MainActivity.this, list_view.class));

                    }
    }
    );
}

    //Add a product to the database
    public void addButtonClicked(View view){
        Timetable timetable = new Timetable(editModule.getText().toString(), editDay.getText().toString(),
                editTime.getText().toString(), editDuration.getText().toString(), editType.getText().toString(),
                editRoom.getText().toString());
        dbHandler.addClass(timetable);
        //printDatabase();
    }

    //Delete items
    public void deleteButtonClicked(View view){
        String inputText = editModule.getText().toString();
        dbHandler.deleteClass(inputText);
        //printDatabase();
    }

    //Print the database
  /* public void printDatabase(){
        String dbString = dbHandler.databaseToString();
        printClass.setText(dbString);
        editModule.setText("");
    } */

}

List View Activity

package com.example.cody.myapplication;

import android.annotation.SuppressLint;
import android.annotation.TargetApi;
import android.database.Cursor;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.widget.SimpleCursorAdapter;
import android.widget.ListView;

import com.google.android.gms.appindexing.Action;
import com.google.android.gms.appindexing.AppIndex;
import com.google.android.gms.common.api.GoogleApiClient;

public class list_view extends AppCompatActivity {

    DBHandler dbhandler;
    SimpleCursorAdapter cursorAdapter;
    ListView listTimeTable;
    /**
     * ATTENTION: This was auto-generated to implement the App Indexing API.
     * See http://ift.tt/1Shh2Dk for more information.
     */
    private GoogleApiClient client;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_list_view);
        listTimeTable = (ListView) findViewById(R.id.productList);
        displayProductList();
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                        .setAction("Action", null).show();
            }
        });
        // ATTENTION: This was auto-generated to implement the App Indexing API.
        // See http://ift.tt/1Shh2Dk for more information.
        client = new GoogleApiClient.Builder(this).addApi(AppIndex.API).build();
    }

    @TargetApi(Build.VERSION_CODES.HONEYCOMB)
    @SuppressLint("NewApi")
    private void displayProductList() {
        try {
            Cursor cursor = dbhandler.listAllClasses();
            if (cursor == null) {

                return;
            }
            if (cursor.getCount() == 0) {

                return;
            }
            String[] columns = new String[]{
                    DBHandler.COLUMN_1,
                    DBHandler.COLUMN_2,
                    DBHandler.COLUMN_3,
                    DBHandler.COLUMN_4,
                    DBHandler.COLUMN_5,
                    DBHandler.COLUMN_6,
            };
            int[] boundTo = new int[]{
                    R.id.mod,
                    R.id.day,
                    R.id.time,
                    R.id.duration,
                    R.id.session,
                    R.id.room
            };


            cursorAdapter = new SimpleCursorAdapter(this,
                    R.layout.list_template,
                    cursor,
                    columns,
                    boundTo,
                    0);

            listTimeTable.setAdapter(cursorAdapter);
        } catch (Exception ex) {
            return;
            //idView.setText("There was an error!");
        }
    }

    @Override
    public void onStart() {
        super.onStart();

        // ATTENTION: This was auto-generated to implement the App Indexing API.
        // See http://ift.tt/1Shh2Dk for more information.
        client.connect();
        Action viewAction = Action.newAction(
                Action.TYPE_VIEW, // TODO: choose an action type.
                "list_view Page", // TODO: Define a title for the content shown.
                // TODO: If you have web page content that matches this app activity's content,
                // make sure this auto-generated web page URL is correct.
                // Otherwise, set the URL to null.
                Uri.parse("http://host/path"),
                // TODO: Make sure this auto-generated app deep link URI is correct.
                Uri.parse("android-app://com.example.cody.myapplication/http/host/path")
        );
        AppIndex.AppIndexApi.start(client, viewAction);
    }

    @Override
    public void onStop() {
        super.onStop();

        // ATTENTION: This was auto-generated to implement the App Indexing API.
        // See http://ift.tt/1Shh2Dk for more information.
        Action viewAction = Action.newAction(
                Action.TYPE_VIEW, // TODO: choose an action type.
                "list_view Page", // TODO: Define a title for the content shown.
                // TODO: If you have web page content that matches this app activity's content,
                // make sure this auto-generated web page URL is correct.
                // Otherwise, set the URL to null.
                Uri.parse("http://host/path"),
                // TODO: Make sure this auto-generated app deep link URI is correct.
                Uri.parse("android-app://com.example.cody.myapplication/http/host/path")
        );
        AppIndex.AppIndexApi.end(client, viewAction);
        client.disconnect();
    }
}

List View Template XML

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://ift.tt/nIICcg"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:padding="6dp"
    android:id="@+id/TextView">
    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:text="ID: "
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/textView1"
        android:layout_below="@+id/textView1"
        android:text="Name: "
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <TextView
        android:id="@+id/textView3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/textView2"
        android:layout_below="@+id/textView2"
        android:text="Quantity: "
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <TextView
        android:id="@+id/mod"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="TextView"
        android:layout_above="@+id/textView2"
        android:layout_alignLeft="@+id/day"
        android:layout_alignStart="@+id/day" />

    <TextView
        android:id="@+id/day"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@+id/textView3"
        android:layout_toRightOf="@+id/textView3"
        android:text="TextView" />

    <TextView
        android:id="@+id/time"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/textView3"
        android:layout_alignBottom="@+id/textView3"
        android:layout_toRightOf="@+id/textView3"
        android:text="TextView" />

    <TextView
        android:id="@+id/textView7"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="ID: "
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:layout_alignTop="@+id/mod"
        android:layout_toRightOf="@+id/mod"
        android:layout_toEndOf="@+id/mod"
        android:layout_marginLeft="33dp"
        android:layout_marginStart="33dp" />

    <TextView
        android:id="@+id/textView8"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Name: "
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:layout_below="@+id/textView7"
        android:layout_toRightOf="@+id/mod"
        android:layout_marginLeft="23dp" />

    <TextView
        android:id="@+id/textView9"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Quantity: "
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:layout_below="@+id/textView8"
        android:layout_toRightOf="@+id/mod"
        android:layout_marginLeft="23dp" />

    <TextView
        android:id="@+id/session"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="TextView"
        android:layout_toRightOf="@+id/textView9"
        android:layout_toEndOf="@+id/textView9"
        android:layout_marginLeft="35dp"
        android:layout_marginStart="35dp"
        android:layout_below="@+id/textView1" />

    <TextView
        android:id="@+id/room"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="TextView"
        android:layout_toRightOf="@+id/textView9"
        android:layout_marginLeft="25dp"
        android:layout_alignTop="@+id/textView9" />

    <TextView
        android:id="@+id/duration"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="TextView"
        android:layout_alignBottom="@+id/textView1"
        android:layout_toRightOf="@+id/textView9"
        android:layout_toEndOf="@+id/textView9" />
</RelativeLayout>   

Activity Main XML

    <?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://ift.tt/nIICcg"
    android:id="@+id/ScrollView01"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fillViewport="true"
    android:scrollbars="none" >
<RelativeLayout xmlns:android="http://ift.tt/nIICcg"
    xmlns:app="http://ift.tt/GEGVYd"
    xmlns:tools="http://ift.tt/LrGmb4"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    tools:context="com.example.cody.myapplication.MainActivity"
    tools:showIn="@layout/activity_main">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="Module"
        android:id="@+id/textView"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_marginTop="33dp" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="Day"
        android:id="@+id/textView2"
        android:layout_below="@+id/textView"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_marginTop="34dp" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="Time"
        android:id="@+id/textView3"
        android:layout_marginTop="42dp"
        android:layout_below="@+id/textView2"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="Duration"
        android:id="@+id/textView4"
        android:layout_marginTop="33dp"
        android:layout_below="@+id/textView3"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="Type"
        android:id="@+id/textView5"
        android:layout_centerVertical="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="Room"
        android:id="@+id/textView6"
        android:layout_below="@+id/textView5"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_marginTop="36dp" />

    <EditText
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/editModule"
        android:layout_alignBottom="@+id/textView"
        android:layout_toRightOf="@+id/textView4"
        android:layout_alignParentRight="true"
        android:layout_alignParentEnd="true" />

    <EditText
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/editDay"
        android:layout_above="@+id/textView3"
        android:layout_toRightOf="@+id/textView"
        android:layout_alignParentRight="true"
        android:layout_alignParentEnd="true" />

    <EditText
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/editTime"
        android:layout_alignBottom="@+id/textView3"
        android:layout_toRightOf="@+id/textView6"
        android:layout_alignRight="@+id/editDuration"
        android:layout_alignEnd="@+id/editDuration" />

    <EditText
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/editDuration"
        android:layout_alignBottom="@+id/textView4"
        android:layout_alignLeft="@+id/editModule"
        android:layout_alignStart="@+id/editModule"
        android:layout_alignRight="@+id/editModule"
        android:layout_alignEnd="@+id/editModule" />

    <EditText
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/editType"
        android:layout_above="@+id/textView5"
        android:layout_alignRight="@+id/editDuration"
        android:layout_alignEnd="@+id/editDuration"
        android:layout_toRightOf="@+id/textView2"
        android:layout_toEndOf="@+id/textView2" />

    <EditText
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/editRoom"
        android:layout_alignTop="@+id/textView6"
        android:layout_toRightOf="@+id/textView"
        android:layout_alignRight="@+id/editType"
        android:layout_alignEnd="@+id/editType" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Add"
        android:id="@+id/addClass"
        android:layout_below="@+id/editRoom"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_marginTop="40dp" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceSmall"
        android:text="Small Text"
        android:onClick="addButtonClicked"
        android:id="@+id/printClass"
        android:layout_below="@+id/editRoom"
        android:layout_alignRight="@+id/editRoom"
        android:layout_alignEnd="@+id/editRoom"
        android:layout_marginRight="49dp"
        android:layout_marginEnd="49dp" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Open"
        android:onClick="openList"
        android:id="@+id/openButton"
        android:layout_above="@+id/textView5"
        android:layout_alignRight="@+id/printClass"
        android:layout_alignEnd="@+id/printClass" />
</RelativeLayout>
</ScrollView>

List Activity XML

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://ift.tt/nIICcg"
    xmlns:app="http://ift.tt/GEGVYd"
    xmlns:tools="http://ift.tt/LrGmb4"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    tools:context="com.example.cody.myapplication.list_view"
    tools:showIn="@layout/activity_list_view">
    <ListView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/productList" />
</RelativeLayout>

As I say, I'm somewhat reaching the end of my rope with this, I can't see a better way of doing it than using a cursor adapter, am I missing something. Insight is appreciated!

Aucun commentaire:

Enregistrer un commentaire