diff --git a/app/src/main/java/com/example/ecwt/KochLessonDefinitions.kt b/app/src/main/java/com/example/ecwt/KochLessonDefinitions.kt new file mode 100644 index 0000000..65ad01b --- /dev/null +++ b/app/src/main/java/com/example/ecwt/KochLessonDefinitions.kt @@ -0,0 +1,29 @@ +package com.example.ecwt + +object KochLessonDefinitions { + private const val LessonOrder = "KMRSUAPTLOWI.NJEF0YVG5/Q9ZH38B?427C1D6X" // This order is from http://www.hfradio.org/koch_2.html //TODO Add prosign lessons? + + val Lessons : MutableList = ArrayList() + + init { + for (i in 1 until LessonOrder.length) { + Lessons.add(KochLesson(i)) + } + } + + data class KochLesson(val lessonIndex : Int) { + override fun toString() : String { + // The zeroth lesson doesn't exist, since it would only contain a single character //TODO raise exception? + + if(lessonIndex == 1) { + // The first lesson is a little special, as it introduces two letters: + return LessonOrder.substring(0, 1) + " and " + LessonOrder.substring(1, 2) + } + return LessonOrder.substring(lessonIndex , lessonIndex + 1) + } + + fun indexForHumans() : Int { + return lessonIndex + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/ecwt/LevelSelectActivity.kt b/app/src/main/java/com/example/ecwt/LevelSelectActivity.kt index 9c46e57..22b5433 100644 --- a/app/src/main/java/com/example/ecwt/LevelSelectActivity.kt +++ b/app/src/main/java/com/example/ecwt/LevelSelectActivity.kt @@ -2,33 +2,8 @@ package com.example.ecwt import androidx.appcompat.app.AppCompatActivity import android.os.Bundle -import android.view.LayoutInflater -import android.view.ViewGroup -import android.widget.AbsListView -import android.widget.LinearLayout -import android.widget.TextView import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView -import com.example.ecwt.dummy.DummyContent - -class LevelSelectAdaptor : RecyclerView.Adapter() { - class LevelSelectViewHolder(val textView : LinearLayout) : RecyclerView.ViewHolder(textView) - - override fun getItemCount(): Int { - return 3 - } - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): LevelSelectViewHolder { - val itemView = LayoutInflater.from(parent.context).inflate(R.layout.fragment_training_level, parent, false) as LinearLayout - - return LevelSelectViewHolder(itemView) - } - - override fun onBindViewHolder(holder: LevelSelectViewHolder, position: Int) { - holder.textView.findViewById(R.id.content).text = "OMG" - } - -} class LevelSelectActivity : AppCompatActivity(), TrainingLevelFragment.OnListFragmentInteractionListener { @@ -38,21 +13,19 @@ class LevelSelectActivity : AppCompatActivity(), setContentView(R.layout.activity_level_select) mLevelSelectLayoutManager = LinearLayoutManager(this) - mLevelSelectViewAdapter = LevelSelectAdaptor() mLevelSelectView = findViewById(R.id.levelSelection_view).apply { setHasFixedSize(true) layoutManager = mLevelSelectLayoutManager - adapter = mLevelSelectViewAdapter + //adapter = mLevelSelectViewAdapter } } - override fun onListFragmentInteraction(item: DummyContent.DummyItem?) { + override fun onListFragmentInteraction(lesson: KochLessonDefinitions.KochLesson?) { TODO("Not yet implemented") } private lateinit var mLevelSelectView : RecyclerView private lateinit var mLevelSelectLayoutManager : RecyclerView.LayoutManager - private lateinit var mLevelSelectViewAdapter : LevelSelectAdaptor } diff --git a/app/src/main/java/com/example/ecwt/TrainingLevelFragment.kt b/app/src/main/java/com/example/ecwt/TrainingLevelFragment.kt index e4b6cb3..b7440b8 100644 --- a/app/src/main/java/com/example/ecwt/TrainingLevelFragment.kt +++ b/app/src/main/java/com/example/ecwt/TrainingLevelFragment.kt @@ -10,9 +10,6 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import com.example.ecwt.dummy.DummyContent -import com.example.ecwt.dummy.DummyContent.DummyItem - /** * A fragment representing a list of Items. * Activities containing this fragment MUST implement the @@ -46,7 +43,7 @@ class TrainingLevelFragment : Fragment() { columnCount <= 1 -> LinearLayoutManager(context) else -> GridLayoutManager(context, columnCount) } - adapter = TrainingLevelRecyclerViewAdapter(DummyContent.ITEMS, listener) + adapter = TrainingLevelRecyclerViewAdapter(KochLessonDefinitions.Lessons, listener) } } return view @@ -78,8 +75,7 @@ class TrainingLevelFragment : Fragment() { * for more information. */ interface OnListFragmentInteractionListener { - // TODO: Update argument type and name - fun onListFragmentInteraction(item: DummyItem?) + fun onListFragmentInteraction(lesson: KochLessonDefinitions.KochLesson?) } companion object { diff --git a/app/src/main/java/com/example/ecwt/TrainingLevelRecyclerViewAdapter.kt b/app/src/main/java/com/example/ecwt/TrainingLevelRecyclerViewAdapter.kt index 93838fd..ee281fa 100644 --- a/app/src/main/java/com/example/ecwt/TrainingLevelRecyclerViewAdapter.kt +++ b/app/src/main/java/com/example/ecwt/TrainingLevelRecyclerViewAdapter.kt @@ -8,17 +8,11 @@ import android.widget.TextView import com.example.ecwt.TrainingLevelFragment.OnListFragmentInteractionListener -import com.example.ecwt.dummy.DummyContent.DummyItem import kotlinx.android.synthetic.main.fragment_training_level.view.* -/** - * [RecyclerView.Adapter] that can display a [DummyItem] and makes a call to the - * specified [OnListFragmentInteractionListener]. - * TODO: Replace the implementation with code for your data type. - */ class TrainingLevelRecyclerViewAdapter( - private val mValues: List, + private val mLessons: List, private val mListener: OnListFragmentInteractionListener? ) : RecyclerView.Adapter() { @@ -26,7 +20,7 @@ class TrainingLevelRecyclerViewAdapter( init { mOnClickListener = View.OnClickListener { v -> - val item = v.tag as DummyItem + val item = v.tag as KochLessonDefinitions.KochLesson // Notify the active callbacks interface (the activity, if the fragment is attached to // one) that an item has been selected. mListener?.onListFragmentInteraction(item) @@ -40,17 +34,17 @@ class TrainingLevelRecyclerViewAdapter( } override fun onBindViewHolder(holder: ViewHolder, position: Int) { - val item = mValues[position] - holder.mIdView.text = item.id - holder.mContentView.text = item.content + val lesson = mLessons[position] + holder.mIdView.text = "Lesson " + lesson.indexForHumans().toString() + holder.mContentView.text = lesson.toString() with(holder.mView) { - tag = item + tag = lesson setOnClickListener(mOnClickListener) } } - override fun getItemCount(): Int = mValues.size + override fun getItemCount(): Int = mLessons.size inner class ViewHolder(val mView: View) : RecyclerView.ViewHolder(mView) { val mIdView: TextView = mView.item_number diff --git a/app/src/main/res/layout/activity_level_select.xml b/app/src/main/res/layout/activity_level_select.xml index 8245803..d80609c 100644 --- a/app/src/main/res/layout/activity_level_select.xml +++ b/app/src/main/res/layout/activity_level_select.xml @@ -9,6 +9,8 @@ + android:layout_width="0dp" + android:layout_height="wrap_content" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" /> \ No newline at end of file