Skip to content

Commit a4a3acf

Browse files
committed
Add ListView Adapter, first connect db
1 parent 0eca15e commit a4a3acf

File tree

6 files changed

+181
-37
lines changed

6 files changed

+181
-37
lines changed
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package com.hackware.mormont.notebook
2+
3+
import android.os.Handler
4+
import android.os.HandlerThread
5+
6+
class DbWorkerThread(threadName: String) :HandlerThread(threadName){
7+
8+
private lateinit var mWorkerHandler: Handler
9+
10+
override fun onLooperPrepared() {
11+
super.onLooperPrepared()
12+
mWorkerHandler = Handler(looper)
13+
}
14+
15+
fun postTask(task:Runnable){
16+
mWorkerHandler.post(task)
17+
}
18+
19+
}

app/src/main/java/com/hackware/mormont/notebook/MainActivity.kt

Lines changed: 45 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,22 +3,50 @@ package com.hackware.mormont.notebook
33
import android.content.Intent
44
import androidx.appcompat.app.AppCompatActivity
55
import android.os.Bundle
6+
import android.os.Handler
67
import android.view.*
8+
import android.widget.ListView
79
import android.widget.PopupMenu
10+
import com.hackware.mormont.notebook.adapters.NoteListAdapter
11+
import com.hackware.mormont.notebook.db.NotesDataBase
12+
import org.wordpress.android.util.ToastUtils.showToast
813

914
class MainActivity : AppCompatActivity(), PopupMenu.OnMenuItemClickListener {
1015

16+
private var mDb: NotesDataBase? = null
17+
18+
private lateinit var mListView: ListView
19+
private lateinit var mAdapter: NoteListAdapter
20+
private lateinit var mFab : View
21+
22+
private lateinit var mDbWorkerThread: DbWorkerThread
23+
24+
private val mUiHandler = Handler()
25+
26+
1127
override fun onCreate(savedInstanceState: Bundle?) {
1228
super.onCreate(savedInstanceState)
1329
setContentView(R.layout.activity_main)
1430
setSupportActionBar(findViewById(R.id.toolbar))
1531

16-
val fab: View = findViewById(R.id.fab)
17-
fab.setOnClickListener { view ->
32+
mFab = findViewById(R.id.fab)
33+
mDbWorkerThread = DbWorkerThread("dbWorkerThread")
34+
mDbWorkerThread.start()
35+
36+
mListView = findViewById(R.id.listView)
37+
mDb = NotesDataBase.getInstance(this)
38+
39+
mFab.setOnClickListener { view ->
1840
startActivity(Intent(this, Editor::class.java))
1941
}
42+
43+
loadDataInListView()
2044
}
2145

46+
override fun onResume() {
47+
super.onResume()
48+
loadDataInListView()
49+
}
2250
override fun onCreateOptionsMenu(menu: Menu): Boolean {
2351
val inflater: MenuInflater = menuInflater
2452
inflater.inflate(R.menu.appbar_menu, menu)
@@ -54,4 +82,19 @@ class MainActivity : AppCompatActivity(), PopupMenu.OnMenuItemClickListener {
5482
else -> false
5583
}
5684
}
85+
86+
private fun loadDataInListView(){
87+
val task = Runnable {
88+
val notesData = mDb?.notesDataDao()?.getAll()
89+
mUiHandler.post {
90+
if (notesData == null || notesData.size == 0){
91+
showToast(this, "NoData in Cashe...")
92+
} else{
93+
mAdapter = NoteListAdapter(this, ArrayList(notesData))
94+
mListView.adapter = mAdapter
95+
}
96+
}
97+
}
98+
mDbWorkerThread.postTask(task)
99+
}
57100
}
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
package com.hackware.mormont.notebook.adapters
2+
3+
4+
import android.app.Activity
5+
import android.content.Context
6+
import android.view.LayoutInflater
7+
import android.view.View
8+
import android.view.ViewGroup
9+
import android.widget.BaseAdapter
10+
import android.widget.TextView
11+
import com.hackware.mormont.notebook.db.entity.NotesData
12+
import com.hackware.mormont.notebook.R
13+
14+
class NoteListAdapter(private var activity: Activity, private var items: ArrayList<NotesData>): BaseAdapter() {
15+
16+
private class ViewHolder(row: View?){
17+
var title: TextView? = null
18+
var noteContent: TextView? = null
19+
20+
init {
21+
this.title = row?.findViewById(R.id.title)
22+
this.noteContent = row?.findViewById(R.id.noteContent)
23+
}
24+
}
25+
26+
override fun getView(position: Int, convertView: View?, parent: ViewGroup): View {
27+
val view: View?
28+
val viewHolder : ViewHolder
29+
30+
if (convertView == null){
31+
val inflater = activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater
32+
view = inflater.inflate(R.layout.note_listview, null)
33+
viewHolder = ViewHolder(view)
34+
view?.tag = viewHolder
35+
} else {
36+
view = convertView
37+
viewHolder = view.tag as ViewHolder
38+
}
39+
40+
val noteData = items[position]
41+
viewHolder.title?.text = noteData.title
42+
viewHolder.noteContent?.text = noteData.strContent
43+
return view as View
44+
}
45+
46+
override fun getItem(position: Int): NotesData{
47+
return items[position]
48+
}
49+
50+
override fun getItemId(position: Int): Long {
51+
return position.toLong()
52+
}
53+
54+
override fun getCount(): Int{
55+
return items.size
56+
}
57+
}

app/src/main/res/layout/activity_editor.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@
6363
android:layout_height="wrap_content"
6464
android:layout_marginStart="20dp"
6565
android:layout_marginEnd="10dp"
66-
android:imeOptions="flagNavigateNext"
66+
android:imeOptions="actionNext"
6767
android:textStyle="bold"
6868
android:backgroundTint="@android:color/transparent"
6969
android:inputType="textCapSentences|textMultiLine"
Lines changed: 35 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,49 +1,50 @@
11
<?xml version="1.0" encoding="utf-8"?>
2-
<androidx.coordinatorlayout.widget.CoordinatorLayout
2+
<androidx.constraintlayout.widget.ConstraintLayout
33
xmlns:android="http://schemas.android.com/apk/res/android"
44
xmlns:tools="http://schemas.android.com/tools"
55
xmlns:app="http://schemas.android.com/apk/res-auto"
66
android:layout_width="match_parent"
77
android:layout_height="match_parent"
88
android:background="@color/secondaryTextColor"
9-
tools:context=".MainActivity">
10-
11-
12-
<LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content">
13-
<androidx.appcompat.widget.Toolbar
14-
android:id="@+id/toolbar"
15-
android:layout_width="match_parent"
16-
android:layout_height="match_parent"
17-
android:layout_margin="10dp"
18-
app:theme="@style/CustomToolbar"
19-
app:title="@string/app_name"
20-
android:elevation="10dp">
21-
</androidx.appcompat.widget.Toolbar>
22-
</LinearLayout>
23-
24-
<androidx.appcompat.widget.AppCompatImageView
25-
android:layout_width="75dp"
26-
android:layout_height="75dp"
27-
android:layout_marginBottom="20dp"
28-
android:layout_gravity="center"
29-
android:src="@drawable/ic_event_note_black_24dp"/>
30-
<TextView
31-
android:layout_width="wrap_content"
9+
tools:context=".MainActivity" android:id="@+id/coordinatorLayout" tools:layout_editor_absoluteY="25dp">
10+
11+
12+
<androidx.appcompat.widget.Toolbar
13+
android:id="@+id/toolbar"
14+
android:layout_width="match_parent"
3215
android:layout_height="wrap_content"
33-
android:textAlignment="center"
34-
android:text="@string/tryAddnewNote"
35-
android:layout_gravity="center"
36-
android:layout_marginTop="120dp"
37-
android:textSize="14sp"
38-
android:textStyle="bold" android:fontFamily="sans-serif"/>
16+
app:theme="@style/CustomToolbar"
17+
app:title="@string/app_name"
18+
android:elevation="16dp"
19+
android:layout_marginTop="8dp"
20+
app:layout_constraintTop_toTopOf="parent"
21+
app:layout_constraintStart_toStartOf="parent"
22+
android:layout_marginStart="8dp" app:layout_constraintEnd_toEndOf="@+id/listView"
23+
android:layout_marginEnd="8dp"
24+
>
25+
</androidx.appcompat.widget.Toolbar>
26+
27+
<ListView
28+
android:layout_width="match_parent"
29+
android:layout_height="0dp" android:id="@+id/listView" android:scrollbars="vertical"
30+
android:visibility="visible"
31+
app:layout_constraintStart_toStartOf="@id/toolbar"
32+
app:layout_constraintHorizontal_bias="0.5" app:layout_constraintEnd_toEndOf="parent"
33+
android:layout_marginBottom="8dp" app:layout_constraintBottom_toBottomOf="parent"
34+
app:layout_constraintTop_toBottomOf="@+id/toolbar" android:layout_marginStart="8dp"
35+
android:layout_marginTop="12dp" android:layout_marginEnd="8dp"/>
36+
37+
38+
3939

4040
<com.google.android.material.floatingactionbutton.FloatingActionButton
4141
android:id="@+id/fab"
4242
android:layout_width="wrap_content"
4343
android:layout_height="wrap_content"
44-
android:layout_gravity="bottom|end"
4544
android:elevation="10dp"
46-
android:layout_margin="16dp"
47-
android:src="@drawable/ic_edit_black_24dp"/>
45+
android:src="@drawable/ic_edit_black_24dp"
46+
app:layout_constraintEnd_toEndOf="parent"
47+
android:layout_marginEnd="16dp" android:layout_marginBottom="16dp"
48+
app:layout_constraintBottom_toBottomOf="parent"/>
4849

49-
</androidx.coordinatorlayout.widget.CoordinatorLayout>
50+
</androidx.constraintlayout.widget.ConstraintLayout>
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
3+
android:orientation="vertical"
4+
android:layout_width="match_parent"
5+
android:layout_height="wrap_content">
6+
7+
<LinearLayout
8+
android:layout_width="match_parent"
9+
android:layout_height="wrap_content"
10+
android:layout_centerVertical="true"
11+
android:orientation="vertical">
12+
<TextView
13+
android:id="@+id/title"
14+
android:text="Title"
15+
android:textStyle="bold"
16+
android:layout_width="match_parent"
17+
android:layout_height="wrap_content"/>
18+
<TextView
19+
android:id="@+id/noteContent"
20+
android:text="content"
21+
android:layout_width="match_parent"
22+
android:layout_height="wrap_content"/>
23+
</LinearLayout>
24+
</RelativeLayout>

0 commit comments

Comments
 (0)