Я пытаюсь создать приложение ToDo, которое отображает введенное пользователем имя задачи и описание задачи в пользовательском элементе списка.Эти данные будут поступать из базы данных SQLite.
Проблема, с которой я сталкиваюсь, заключается в том, что я не знаю, как поместить и имя задачи, и описание задачи в этот элемент пользовательского списка, поскольку все попытки, которые я сделал, просто показываютпустой экран.
Это пользовательский list_item.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:background="@color/colorWhite">
<TextView
android:id="@+id/task_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_marginStart="55dp"
android:layout_marginTop="25dp"
android:text="TextView" />
<View
android:id="@+id/viewbutton"
android:layout_width="16dp"
android:layout_height="16dp"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_marginStart="21dp"
android:layout_marginTop="24dp"
android:background="@layout/round" />
<TextView
android:id="@+id/task_desc"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/task_name"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_marginStart="55dp"
android:layout_marginTop="53dp"
android:layout_marginBottom="10dp"
android:text="Undefined"
android:textStyle="bold" />
</RelativeLayout>
Вот мой DatabaseHelper.java
public class DatabaseHelper extends SQLiteOpenHelper {
private static final String TAG = "DatabaseHelper";
private static final String TABLE_NAME = "task_table";
private static final String COL1 = "ID";
private static final String COL2 = "name";
private static final String COL3 = "priority";
private static final String COL4 = "desc";
public DatabaseHelper(Context context) {
super(context, TABLE_NAME, null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
String createTable = "CREATE TABLE " + TABLE_NAME + " (ID INTEGER PRIMARY KEY AUTOINCREMENT, " +
COL2 +" TEXT, " + COL3 + " INTEGER, '" + COL4 + "' TEXT )";
db.execSQL(createTable);
}
@Override
public void onUpgrade(SQLiteDatabase db, int i, int i1) {
db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
onCreate(db);
}
public boolean addData(String item, String desc) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put(COL2, item);
contentValues.put(COL4, desc);
Log.d(TAG, "addData: Adding " + item + " to " + TABLE_NAME);
long result = db.insert(TABLE_NAME, null, contentValues);
if (result == -1) {
return false;
} else {
return true;
}
}
public ArrayList<String> getTaskList(){
ArrayList<String> taskList = new ArrayList<>();
SQLiteDatabase td = this.getReadableDatabase();
Cursor cursor = td.query(TABLE_NAME,new String[]{COL2},null,null,null,null,null);
while(cursor.moveToNext()){
int index = cursor.getColumnIndex(COL2);
taskList.add(cursor.getString(index));
}
cursor.close();
td.close();
return taskList;
}
public Cursor getData(){
SQLiteDatabase db = this.getWritableDatabase();
String query = "SELECT * FROM " + TABLE_NAME;
Cursor data = db.rawQuery(query, null);
return data;
}
public Cursor getItemID(String name){
SQLiteDatabase db = this.getWritableDatabase();
String query = "SELECT " + COL1 + " FROM " + TABLE_NAME +
" WHERE " + COL2 + " = '" + name + "'";
Cursor data = db.rawQuery(query, null);
return data;
}
А вот мой ListDataActivity.java
public class ListDataActivity extends AppCompatActivity {
private static final String TAG = "ListDataActivity";
DatabaseHelper mDatabaseHelper;
TextView mTaskName;
TextView mTaskDesc;
CustomAdapter customAdapter;
ArrayAdapter<String> adapter;
private ListView mListView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.list_layout);
mListView = (ListView) findViewById(R.id.listView);
mDatabaseHelper = new DatabaseHelper(this);
mTaskDesc = (TextView) findViewById(R.id.task_desc);
mTaskName = (TextView) findViewById(R.id.task_name);
populateListView();
}
private void populateListView() {
Log.d(TAG, "populateListView: Displaying data in the ListView.");
//get the data and append to a list
ArrayList<String> taskList = mDatabaseHelper.getTaskList();
if (adapter == null) {
adapter = new ArrayAdapter<String>(this, R.layout.list_item, R.id.task_name, taskList);
mListView.setAdapter(adapter);
} else {
adapter.clear();
adapter.addAll(taskList);
adapter.notifyDataSetChanged();
}
Я с удовольствием уточню что-нибудь из этого, если то, что я спрашиваю, неясно, и большое спасибо заранее!
Я новичок в Java, поэтому, если я допустил какие-то глупые ошибки, пожалуйста, будьте осторожны со мной!