use the same recycler adapter under every circumstance

This commit is contained in:
tibbi 2016-08-13 22:50:15 +02:00
parent c0e3e25be0
commit 0bc34273d7
4 changed files with 36 additions and 10 deletions

View File

@ -5,22 +5,26 @@ import android.os.Bundle
import android.view.Menu import android.view.Menu
import android.view.MenuItem import android.view.MenuItem
import com.simplemobiletools.applauncher.R import com.simplemobiletools.applauncher.R
import com.simplemobiletools.applauncher.adapters.MyCursorAdapter import com.simplemobiletools.applauncher.adapters.RecyclerAdapter
import com.simplemobiletools.applauncher.databases.DbHelper import com.simplemobiletools.applauncher.databases.DbHelper
import com.simplemobiletools.applauncher.dialogs.AddAppDialog import com.simplemobiletools.applauncher.dialogs.AddAppDialog
import com.simplemobiletools.applauncher.extensions.isFirstRun import com.simplemobiletools.applauncher.extensions.isFirstRun
import com.simplemobiletools.applauncher.extensions.preferences import com.simplemobiletools.applauncher.extensions.preferences
import com.simplemobiletools.applauncher.extensions.viewIntent import com.simplemobiletools.applauncher.extensions.viewIntent
import com.simplemobiletools.applauncher.models.AppLauncher
import kotlinx.android.synthetic.main.activity_main.* import kotlinx.android.synthetic.main.activity_main.*
import java.util.*
class MainActivity : SimpleActivity() { class MainActivity : SimpleActivity() {
lateinit var dbHelper: DbHelper lateinit var dbHelper: DbHelper
lateinit var launchers: ArrayList<AppLauncher>
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main) setContentView(R.layout.activity_main)
dbHelper = DbHelper(applicationContext) dbHelper = DbHelper(applicationContext)
launchers_holder.adapter = MyCursorAdapter(applicationContext, dbHelper.getLaunchers()) { launchers = dbHelper.getLaunchers()
launchers_holder.adapter = RecyclerAdapter(applicationContext, launchers) {
val launchIntent = packageManager.getLaunchIntentForPackage(it.pkgName) val launchIntent = packageManager.getLaunchIntentForPackage(it.pkgName)
if (launchIntent != null) { if (launchIntent != null) {
startActivity(launchIntent) startActivity(launchIntent)

View File

@ -1,5 +1,6 @@
package com.simplemobiletools.applauncher.adapters package com.simplemobiletools.applauncher.adapters
import android.content.Context
import android.support.v7.widget.RecyclerView import android.support.v7.widget.RecyclerView
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
@ -8,11 +9,12 @@ import com.simplemobiletools.applauncher.R
import com.simplemobiletools.applauncher.models.AppLauncher import com.simplemobiletools.applauncher.models.AppLauncher
import kotlinx.android.synthetic.main.app_launcher_dialog_item.view.* import kotlinx.android.synthetic.main.app_launcher_dialog_item.view.*
class RecyclerAdapter(val launchers: List<AppLauncher>, val itemClick: (AppLauncher) -> Unit) :
class RecyclerAdapter(val cxt: Context, val launchers: List<AppLauncher>, val itemClick: (AppLauncher) -> Unit) :
RecyclerView.Adapter<RecyclerAdapter.ViewHolder>() { RecyclerView.Adapter<RecyclerAdapter.ViewHolder>() {
override fun onBindViewHolder(holder: ViewHolder, position: Int) { override fun onBindViewHolder(holder: ViewHolder, position: Int) {
holder.bindView(launchers[position]) holder.bindView(cxt, launchers[position])
} }
override fun onCreateViewHolder(parent: ViewGroup?, viewType: Int): ViewHolder { override fun onCreateViewHolder(parent: ViewGroup?, viewType: Int): ViewHolder {
@ -25,11 +27,18 @@ class RecyclerAdapter(val launchers: List<AppLauncher>, val itemClick: (AppLaunc
} }
class ViewHolder(view: View, val itemClick: (AppLauncher) -> Unit) : RecyclerView.ViewHolder(view) { class ViewHolder(view: View, val itemClick: (AppLauncher) -> Unit) : RecyclerView.ViewHolder(view) {
fun bindView(launcher: AppLauncher) { fun bindView(context: Context, launcher: AppLauncher) {
with(launcher) { with(launcher) {
itemView.launcher_label.text = launcher.name itemView.launcher_label.text = launcher.name
itemView.launcher_icon.setImageDrawable(launcher.drawable)
itemView.setOnClickListener { itemClick(this) } itemView.setOnClickListener { itemClick(this) }
if (launcher.iconId != 0) {
val icon = context.resources.getDrawable(launcher.iconId)
itemView.launcher_icon.setImageDrawable(icon)
} else {
val icon = context.packageManager.getApplicationIcon(launcher.pkgName)
itemView.launcher_icon.setImageDrawable(icon)
}
} }
} }
} }

View File

@ -2,10 +2,11 @@ package com.simplemobiletools.applauncher.databases
import android.content.ContentValues import android.content.ContentValues
import android.content.Context import android.content.Context
import android.database.Cursor
import android.database.sqlite.SQLiteDatabase import android.database.sqlite.SQLiteDatabase
import android.database.sqlite.SQLiteOpenHelper import android.database.sqlite.SQLiteOpenHelper
import com.simplemobiletools.applauncher.R import com.simplemobiletools.applauncher.R
import com.simplemobiletools.applauncher.models.AppLauncher
import java.util.*
class DbHelper(context: Context) : SQLiteOpenHelper(context, "launchers.db", null, 1) { class DbHelper(context: Context) : SQLiteOpenHelper(context, "launchers.db", null, 1) {
val TABLE = "launchers" val TABLE = "launchers"
@ -43,8 +44,20 @@ class DbHelper(context: Context) : SQLiteOpenHelper(context, "launchers.db", nul
db.insert(TABLE, null, contentValues) db.insert(TABLE, null, contentValues)
} }
fun getLaunchers(): Cursor { fun getLaunchers(): ArrayList<AppLauncher> {
return readableDatabase.query(TABLE, arrayOf(NAME, PKG_NAME, ICON_ID), null, null, null, null, NAME) val launchers = ArrayList<AppLauncher>()
val cursor = readableDatabase.query(TABLE, arrayOf(NAME, PKG_NAME, ICON_ID), null, null, null, null, NAME)
try {
while (cursor.moveToNext()) {
val name = cursor.getString(cursor.getColumnIndex(DbHelper.NAME))
val pkgName = cursor.getString(cursor.getColumnIndex(DbHelper.PKG_NAME))
val icon = cursor.getInt(cursor.getColumnIndex(DbHelper.ICON_ID))
launchers.add(AppLauncher(name, pkgName, icon, null))
}
} finally {
cursor.close()
}
return launchers
} }
override fun onCreate(db: SQLiteDatabase) { override fun onCreate(db: SQLiteDatabase) {

View File

@ -47,7 +47,7 @@ class AddAppDialog() : DialogFragment() {
val sorted = apps.sortedWith(compareBy { it.name.toLowerCase() }) val sorted = apps.sortedWith(compareBy { it.name.toLowerCase() })
val unique = sorted.distinctBy { it.pkgName } val unique = sorted.distinctBy { it.pkgName }
recyclerView.launchers_holder.adapter = RecyclerAdapter(unique) { recyclerView.launchers_holder.adapter = RecyclerAdapter(activity, unique) {
} }
} }