Skip to content

Commit

Permalink
add favorite and database
Browse files Browse the repository at this point in the history
  • Loading branch information
HarioBudiharjo committed Oct 6, 2018
1 parent 29b53de commit ad6db9a
Show file tree
Hide file tree
Showing 18 changed files with 408 additions and 18 deletions.
4 changes: 2 additions & 2 deletions .idea/assetWizardSettings.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Binary file modified .idea/caches/build_file_checksums.ser
Binary file not shown.
2 changes: 1 addition & 1 deletion .idea/misc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -2,39 +2,62 @@ package com.hariobudiharjo.footballmatchschedule.Activity

import android.app.Activity
import android.app.ProgressDialog
import android.content.ClipData
import android.content.Context
import android.database.sqlite.SQLiteConstraintException
import android.os.Build
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.support.v4.content.ContextCompat
import android.util.Log
import android.view.Menu
import android.view.MenuItem
import android.widget.ImageView
import android.widget.Toast
import com.bumptech.glide.Glide
import com.google.gson.Gson
import com.hariobudiharjo.footballmatchschedule.Database.database
import com.hariobudiharjo.footballmatchschedule.Model.favoriteModel
import com.hariobudiharjo.footballmatchschedule.Model.matchModel
import com.hariobudiharjo.footballmatchschedule.Model.matchResponse
import com.hariobudiharjo.footballmatchschedule.Model.teamResponse
import com.hariobudiharjo.footballmatchschedule.Network.ApiMatch
import com.hariobudiharjo.footballmatchschedule.R
import kotlinx.android.synthetic.main.activity_detail.*
import org.jetbrains.anko.db.classParser
import org.jetbrains.anko.db.insert
import org.jetbrains.anko.db.select
import org.jetbrains.anko.doAsync
import org.jetbrains.anko.uiThread

import org.jetbrains.anko.db.delete

class DetailActivity : AppCompatActivity() {

// https://www.thesportsdb.com/api/v1/json/1/lookupevent.php?id=576526

lateinit var imageHome : ImageView
lateinit var imageAway : ImageView
lateinit var imageHome: ImageView
lateinit var imageAway: ImageView
lateinit var data: matchResponse
lateinit var idevent: String
var isFavorite = false

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_detail)
// api key
// 4012921

setSupportActionBar(toolbar)

val request = ApiMatch()
val request2 = ApiMatch()
val gson = Gson()

val idevent = intent.getStringExtra("id")
idevent = intent.getStringExtra("id")

isFavorite = cekFavorite()
Log.d("DEBUG", "favorite $isFavorite")

imageHome = findViewById(R.id.iv_club_home)
imageAway = findViewById(R.id.iv_club_away)
Expand All @@ -46,7 +69,7 @@ class DetailActivity : AppCompatActivity() {
progress.show()

doAsync {
val data = gson.fromJson(request
data = gson.fromJson(request
.doRequest("https://www.thesportsdb.com/api/v1/json/1/lookupevent.php?id=${idevent}"),
matchResponse::class.java)

Expand Down Expand Up @@ -78,17 +101,17 @@ class DetailActivity : AppCompatActivity() {
tv_gk_home.text = data.events[0].strHomeLineupGoalkeeper
tv_gk_away.text = data.events[0].strAwayLineupGoalkeeper

tv_def_home.text = data.events[0].strHomeLineupDefense?.replace(";","\n")
tv_def_away.text = data.events[0].strAwayLineupDefense?.replace(";","\n")
tv_def_home.text = data.events[0].strHomeLineupDefense?.replace(";", "\n")
tv_def_away.text = data.events[0].strAwayLineupDefense?.replace(";", "\n")

tv_mid_home.text = data.events[0].strHomeLineupMidfield?.replace(";","\n")
tv_mid_away.text = data.events[0].strAwayLineupMidfield?.replace(";","\n")
tv_mid_home.text = data.events[0].strHomeLineupMidfield?.replace(";", "\n")
tv_mid_away.text = data.events[0].strAwayLineupMidfield?.replace(";", "\n")

tv_forward_home.text = data.events[0].strHomeLineupForward?.replace(";","\n")
tv_forward_away.text = data.events[0].strAwayLineupForward?.replace(";","\n")
tv_forward_home.text = data.events[0].strHomeLineupForward?.replace(";", "\n")
tv_forward_away.text = data.events[0].strAwayLineupForward?.replace(";", "\n")

tv_sub_home.text = data.events[0].strHomeLineupSubstitutes?.replace(";","\n")
tv_sub_away.text = data.events[0].strAwayLineupSubstitutes?.replace(";","\n")
tv_sub_home.text = data.events[0].strHomeLineupSubstitutes?.replace(";", "\n")
tv_sub_away.text = data.events[0].strAwayLineupSubstitutes?.replace(";", "\n")

progress.dismiss()
}
Expand All @@ -100,4 +123,97 @@ class DetailActivity : AppCompatActivity() {
}
}
}

override fun onCreateOptionsMenu(menu: Menu): Boolean {
// Inflate the menu; this adds items to the action bar if it is present.
menuInflater.inflate(R.menu.menu_main, menu)
if (isFavorite) {
// if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
// item.icon = getDrawable(R.drawable.ic_favorite_black_home_24dp)
menu.getItem(0).setIcon(R.drawable.ic_favorite_black_24dp)
// }
} else {
menu.getItem(0).setIcon(R.drawable.ic_favorite_border_black_24dp)
}
return true
}

override fun onOptionsItemSelected(item: MenuItem): Boolean {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
return when (item.itemId) {
R.id.action_favorite -> {
klikFavorite()
Log.d("DEBUG", isFavorite.toString())
if (isFavorite) {
// if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
// item.icon = getDrawable(R.drawable.ic_favorite_black_home_24dp)
item.icon = ContextCompat.getDrawable(baseContext, R.drawable.ic_favorite_black_24dp)
// }
} else {
item.icon = ContextCompat.getDrawable(baseContext, R.drawable.ic_favorite_border_black_24dp)
}
true
}
else -> super.onOptionsItemSelected(item)
}
}

private fun klikFavorite() {
if (isFavorite)
deleteFromFavorite()
else
addToFavorite()
}

private fun cekFavorite(): Boolean {
var balikan = false
baseContext.database.use {
select(favoriteModel.TABLE_FAVORITE)
.whereArgs("(ID_ = {idevent})",
"idevent" to idevent).exec {
//do something with your result
// return@exec this.columnCount > 0
balikan = this.count > 0
Log.d("DEBUG", "Balikan $balikan")
}

}
return balikan

}

private fun addToFavorite() {
try {
baseContext.database.use {
insert(favoriteModel.TABLE_FAVORITE,
favoriteModel.ID to idevent,
favoriteModel.TEAM_NAME_HOME to data.events[0].homeTeam,
favoriteModel.TEAM_NAME_AWAY to data.events[0].awayTeam,
favoriteModel.TEAM_SCORE_HOME to data.events[0].homeScore,
favoriteModel.TEAM_SCORE_AWAY to data.events[0].awayScore,
favoriteModel.DATE_EVENT to data.events[0].dateEvent
)
isFavorite = true
Log.d("DEBUG", "SUKSES FAVORITE")
}
} catch (e: SQLiteConstraintException) {
Log.d("DEBUG", e.message)
}
}

private fun deleteFromFavorite() {
try {
baseContext.database.use {
delete(favoriteModel.TABLE_FAVORITE, "(ID_ = {idevent})",
"idevent" to idevent)
isFavorite = false
Log.d("DEBUG", "SUKSES DELETE")
}
} catch (e: SQLiteConstraintException) {
Log.d("DEBUG", e.message)
}
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import android.support.design.widget.BottomNavigationView
import android.support.v4.app.Fragment
import android.support.v4.app.FragmentTransaction
import android.support.v7.app.AppCompatActivity
import com.hariobudiharjo.footballmatchschedule.Fragment.FavoriteFragment
import com.hariobudiharjo.footballmatchschedule.Fragment.NextMatchFragment
import com.hariobudiharjo.footballmatchschedule.Fragment.PrevMatchFragment
import com.hariobudiharjo.footballmatchschedule.R
Expand Down Expand Up @@ -35,6 +36,13 @@ class UtamaActivity : AppCompatActivity() {
ft.commit()
return@OnNavigationItemSelectedListener true
}
R.id.navigation_favorite -> {
currentFragment = FavoriteFragment()
ft = supportFragmentManager.beginTransaction()
ft.replace(R.id.fl_main, currentFragment)
ft.commit()
return@OnNavigationItemSelectedListener true
}
}
false
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
package com.hariobudiharjo.footballmatchschedule.Adapter

import android.content.Context
import android.content.Intent
import android.support.v7.widget.RecyclerView
import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.TextView
import com.hariobudiharjo.footballmatchschedule.Activity.DetailActivity
import com.hariobudiharjo.footballmatchschedule.Model.favoriteModel
import com.hariobudiharjo.footballmatchschedule.Model.matchModel
import com.hariobudiharjo.footballmatchschedule.R

class RVFavoriteAdapter(var context: Context, var matchs: List<favoriteModel>) : RecyclerView.Adapter<RVFavoriteAdapter.ViewHolder>() {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val view = LayoutInflater.from(context).inflate(R.layout.rv_list_schedule_item, parent, false)
return RVFavoriteAdapter.ViewHolder(view)
}

override fun getItemCount(): Int {
return matchs.size
}

override fun onBindViewHolder(holder: ViewHolder, position: Int) {
holder.bindItems(matchs[position])
}

class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
fun bindItems(data: favoriteModel) {

val tv_tanggal: TextView = itemView.findViewById(R.id.tv_tanggal)
val tv_score_home: TextView = itemView.findViewById(R.id.tv_score_home)
val tv_club_home: TextView = itemView.findViewById(R.id.tv_club_home)
val tv_score_away: TextView = itemView.findViewById(R.id.tv_score_away)
val tv_club_away: TextView = itemView.findViewById(R.id.tv_club_away)

tv_tanggal.text = data.dateEvent
tv_score_home.text = data.homeScore
tv_club_home.text = data.homeTeam
tv_score_away.text = data.awayScore
tv_club_away.text = data.awayTeam

itemView.setOnClickListener({
val intent = Intent(it.context, DetailActivity::class.java)
intent.putExtra("id", data.idEvent.toString())
Log.d("DEBUG", "ID EVENT ${data.idEvent}")
it.context.startActivity(intent)
})
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
package com.hariobudiharjo.footballmatchschedule.Database

import android.content.Context
import android.database.sqlite.SQLiteDatabase
import com.hariobudiharjo.footballmatchschedule.Model.favoriteModel
import org.jetbrains.anko.db.*

class MyDatabaseOpenHelper(ctx: Context) : ManagedSQLiteOpenHelper(ctx, "FavoriteTeam.db", null, 1) {
companion object {
private var instance: MyDatabaseOpenHelper? = null

@Synchronized
fun getInstance(ctx: Context): MyDatabaseOpenHelper {
if (instance == null) {
instance = MyDatabaseOpenHelper(ctx.applicationContext)
}
return instance!!
}
}

override fun onCreate(db: SQLiteDatabase) {
// Here you create tables
db.createTable(favoriteModel.TABLE_FAVORITE, true,
favoriteModel.ID to INTEGER + PRIMARY_KEY + AUTOINCREMENT,
favoriteModel.TEAM_NAME_HOME to TEXT,
favoriteModel.TEAM_NAME_AWAY to TEXT,
favoriteModel.TEAM_SCORE_HOME to TEXT,
favoriteModel.TEAM_SCORE_AWAY to TEXT,
favoriteModel.DATE_EVENT to TEXT
)
}

override fun onUpgrade(db: SQLiteDatabase, oldVersion: Int, newVersion: Int) {
// Here you can upgrade tables, as usual
db.dropTable(favoriteModel.TABLE_FAVORITE, true)
}
}

// Access property for Context
val Context.database: MyDatabaseOpenHelper
get() = MyDatabaseOpenHelper.getInstance(applicationContext)
Loading

0 comments on commit ad6db9a

Please sign in to comment.