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