mirror of
				https://github.com/SimpleMobileTools/Simple-App-Launcher.git
				synced 2025-06-05 21:49:21 +02:00 
			
		
		
		
	use the same recycler adapter under every circumstance
This commit is contained in:
		@@ -5,22 +5,26 @@ import android.os.Bundle
 | 
			
		||||
import android.view.Menu
 | 
			
		||||
import android.view.MenuItem
 | 
			
		||||
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.dialogs.AddAppDialog
 | 
			
		||||
import com.simplemobiletools.applauncher.extensions.isFirstRun
 | 
			
		||||
import com.simplemobiletools.applauncher.extensions.preferences
 | 
			
		||||
import com.simplemobiletools.applauncher.extensions.viewIntent
 | 
			
		||||
import com.simplemobiletools.applauncher.models.AppLauncher
 | 
			
		||||
import kotlinx.android.synthetic.main.activity_main.*
 | 
			
		||||
import java.util.*
 | 
			
		||||
 | 
			
		||||
class MainActivity : SimpleActivity() {
 | 
			
		||||
    lateinit var dbHelper: DbHelper
 | 
			
		||||
    lateinit var launchers: ArrayList<AppLauncher>
 | 
			
		||||
 | 
			
		||||
    override fun onCreate(savedInstanceState: Bundle?) {
 | 
			
		||||
        super.onCreate(savedInstanceState)
 | 
			
		||||
        setContentView(R.layout.activity_main)
 | 
			
		||||
        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)
 | 
			
		||||
            if (launchIntent != null) {
 | 
			
		||||
                startActivity(launchIntent)
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,6 @@
 | 
			
		||||
package com.simplemobiletools.applauncher.adapters
 | 
			
		||||
 | 
			
		||||
import android.content.Context
 | 
			
		||||
import android.support.v7.widget.RecyclerView
 | 
			
		||||
import android.view.LayoutInflater
 | 
			
		||||
import android.view.View
 | 
			
		||||
@@ -8,11 +9,12 @@ import com.simplemobiletools.applauncher.R
 | 
			
		||||
import com.simplemobiletools.applauncher.models.AppLauncher
 | 
			
		||||
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>() {
 | 
			
		||||
 | 
			
		||||
    override fun onBindViewHolder(holder: ViewHolder, position: Int) {
 | 
			
		||||
        holder.bindView(launchers[position])
 | 
			
		||||
        holder.bindView(cxt, launchers[position])
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    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) {
 | 
			
		||||
        fun bindView(launcher: AppLauncher) {
 | 
			
		||||
        fun bindView(context: Context, launcher: AppLauncher) {
 | 
			
		||||
            with(launcher) {
 | 
			
		||||
                itemView.launcher_label.text = launcher.name
 | 
			
		||||
                itemView.launcher_icon.setImageDrawable(launcher.drawable)
 | 
			
		||||
                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)
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
@@ -2,10 +2,11 @@ package com.simplemobiletools.applauncher.databases
 | 
			
		||||
 | 
			
		||||
import android.content.ContentValues
 | 
			
		||||
import android.content.Context
 | 
			
		||||
import android.database.Cursor
 | 
			
		||||
import android.database.sqlite.SQLiteDatabase
 | 
			
		||||
import android.database.sqlite.SQLiteOpenHelper
 | 
			
		||||
import com.simplemobiletools.applauncher.R
 | 
			
		||||
import com.simplemobiletools.applauncher.models.AppLauncher
 | 
			
		||||
import java.util.*
 | 
			
		||||
 | 
			
		||||
class DbHelper(context: Context) : SQLiteOpenHelper(context, "launchers.db", null, 1) {
 | 
			
		||||
    val TABLE = "launchers"
 | 
			
		||||
@@ -43,8 +44,20 @@ class DbHelper(context: Context) : SQLiteOpenHelper(context, "launchers.db", nul
 | 
			
		||||
        db.insert(TABLE, null, contentValues)
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    fun getLaunchers(): Cursor {
 | 
			
		||||
        return readableDatabase.query(TABLE, arrayOf(NAME, PKG_NAME, ICON_ID), null, null, null, null, NAME)
 | 
			
		||||
    fun getLaunchers(): ArrayList<AppLauncher> {
 | 
			
		||||
        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) {
 | 
			
		||||
 
 | 
			
		||||
@@ -47,7 +47,7 @@ class AddAppDialog() : DialogFragment() {
 | 
			
		||||
 | 
			
		||||
        val sorted = apps.sortedWith(compareBy { it.name.toLowerCase() })
 | 
			
		||||
        val unique = sorted.distinctBy { it.pkgName }
 | 
			
		||||
        recyclerView.launchers_holder.adapter = RecyclerAdapter(unique) {
 | 
			
		||||
        recyclerView.launchers_holder.adapter = RecyclerAdapter(activity, unique) {
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user