Наша проблема заключается в отображении записей из SQLite database
в деятельности.Мы можем записать данные в базу данных, которую мы проверили, что данные записаны с DBBrowser
.Другая часть этой проблемы - RecyclerAdapter
.Мы потратили два дня на разработку синтаксиса.Ход выполнения программы прост: одна строка EditText
сохраняется, затем мы переходим к PersonActivity
, который должен отображать сохраненные данные.В PersonActivity
мы запрашиваем базу данных для всех записей и возвращаем contactList
.Наш дизайн MVC
. Мы разместим код ниже для DBHelper
, RecyclerAdapter
и PersonActivity
для отображения данных с задействованными файлами XML
.Также Model Class
.
class Contact{
var id: Int = 0
var name: String = ""
}
DBHelper
вставляет данные и queryAll DB
создается без необходимости для всего кода
// Start of CRUD functions
fun insert(values: ContentValues): Long {
val Id = db!!.insert(dbTable, null, values)
return Id
}
fun queryAll(): List<Contact> {
val contactList = ArrayList<Contact>()
val selectQuery = "SELECT * FROM $dbTable"
val cursor = db!!.rawQuery(selectQuery, null)
if (cursor != null) {
if (cursor.moveToFirst()) {
do {
val contact = Contact()
contact.id = Integer.parseInt(cursor.getString(cursor.getColumnIndex(colId)))
contact.name = cursor.getString(cursor.getColumnIndex(colName))
contactList.add(contact)
} while (cursor.moveToNext())
}
}
cursor.close()
return contactList
}
RecyclerAdapter ПРИМЕЧАНИЕ комментарии
class PersonRecyclerAdapter(val context:Context, val
items:List<Contact>):RecyclerView.Adapter<RecyclerView.ViewHolder>(){
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int):
RecyclerView.ViewHolder {
return ViewHolder(LayoutInflater.from(context).inflate(R.layout.single_card, parent, false))
}
override fun getItemCount(): Int {
return items.size
}
override fun onBindViewHolder(viewHolder: RecyclerView.ViewHolder, position: Int) {
val item = items.get(position)
viewHolder.bindItem(item)
//viewHolder.itemName.text = items[position]
// WHAT IS CORRECT SYNTAX FOR LINE OF CODE ABOVE
}
private fun Any.bindItem(item: Contact) {
// AS Added this fun ?
}
class ViewHolder(view: View) : RecyclerView.ViewHolder(view) {
val itemName = view.tvName
}
}
PersonActivity
, которые должны отображать contactList
данные
class PersonActivity : AppCompatActivity() {
private var rvRecyclerView: RecyclerView? = null
private var contactList:List<Contact> = ArrayList()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_person)
val names = contactList
rvRecyclerView?.layoutManager = LinearLayoutManager(this)
rvRecyclerView?.setHasFixedSize(true)
rvRecyclerView?.adapter = PersonRecyclerAdapter(this, names)
callHOME()
}
private fun callHOME(){
val db = DBHelper(this)
contactList = db.queryAll()
}
}
XML-файлы для PersonActivity и раздутый файл
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.androidstackoverflow.kotlincontacts.PersonActivity"
tools:showIn="@layout/activity_person">
<android.support.v7.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/rvRecylerView">
</android.support.v7.widget.RecyclerView>
</RelativeLayout>
Завышенное представление XML
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/list_new_card"
android:layout_width="match_parent"
android:layout_height="100dp"
android:layout_margin="2dp"
android:background="@color/colorAccent"
android:orientation="vertical">
<TextView
android:id="@+id/tvName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:textColor="@color/color_Black"
android:textSize="20sp"
android:text="@string/app_name"
android:textStyle="bold" />
</LinearLayout>
Пожалуйста, поймите, мы рассмотрели многочисленные варианты кода для этой проблемы!Прежде чем мы обратимся за помощью.Вопросы в два раза Как показать данные на PersonActivity
?Правильный ли синтаксис PersonRecyclerAdapter
?