Scrolling through verses works correctly

Binding not working correctly, but shouldn't be hard to fix
This commit is contained in:
Bradlee Speice 2014-11-26 16:50:27 -05:00
parent 54b0290ef2
commit 989e3e8023
3 changed files with 39 additions and 16 deletions

View File

@ -10,6 +10,10 @@ import org.bspeice.minimalbible.R
import android.widget.TextView import android.widget.TextView
import org.bspeice.minimalbible.service.format.osisparser.OsisParser import org.bspeice.minimalbible.service.format.osisparser.OsisParser
import org.crosswire.jsword.book.getVersification import org.crosswire.jsword.book.getVersification
import org.crosswire.jsword.versification.getBooks
import org.crosswire.jsword.versification.BibleBook
import org.bspeice.minimalbible.activity.viewer.BookAdapter.ChapterInfo
import android.util.Log
/** /**
* Adapter used for displaying a book * Adapter used for displaying a book
@ -18,36 +22,55 @@ import org.crosswire.jsword.book.getVersification
*/ */
class BookAdapter(val b: Book) : RecyclerView.Adapter<PassageView>() { class BookAdapter(val b: Book) : RecyclerView.Adapter<PassageView>() {
val versification = b.getVersification()
val bookList = versification.getBooks()
val chapterCount = bookList.map { versification.getLastChapter(it) - 1 }.sum()
data class ChapterInfo(val book: Book, val chapter: Int, val bibleBook: BibleBook,
val vStart: Int, val vEnd: Int)
// TODO: Lazy compute values needed for this list
val chapterList: List<ChapterInfo> = bookList.flatMap {
val currentBook = it
(1..versification.getLastChapter(currentBook)).map { chapter ->
Log.d("BookAdapter", "Building info for chapter ${chapter}")
ChapterInfo(b, chapter, currentBook,
versification.getFirstVerse(currentBook, chapter),
versification.getLastVerse(currentBook, chapter))
}
}
/** /**
* Create a new view * I'm not sure what the position argument actually is,
* but on initial load it doesn't change
*/ */
override fun onCreateViewHolder(parent: ViewGroup?, override fun onCreateViewHolder(parent: ViewGroup?,
position: Int): PassageView? { position: Int): PassageView {
val emptyView = LayoutInflater.from(parent?.getContext()) val emptyView = LayoutInflater.from(parent?.getContext())
.inflate(R.layout.viewer_passage_view, parent, false) .inflate(R.layout.viewer_passage_view, parent, false) as TextView
val passage = PassageView(emptyView) val passage = PassageView(emptyView)
// passage.v setText o.getVerse(b, position).content
return passage return passage
} }
/** /**
* Bind an existing view * Bind an existing view to its chapter content
*/ */
override fun onBindViewHolder(view: PassageView, position: Int) { override fun onBindViewHolder(view: PassageView, position: Int) =
val o = OsisParser() view bind chapterList[position]
view.v setText o.getVerse(b, position).content
}
/** /**
* Get the number of chapters in the book * Get the number of chapters in the book
*/ */
override fun getItemCount(): Int = b.getVersification() override fun getItemCount(): Int = chapterCount
.getAllVerses().getEnd().getOrdinal()
} }
class PassageView(val _v: View) : RecyclerView.ViewHolder(_v) { class PassageView(val v: TextView) : RecyclerView.ViewHolder(v) {
val v = _v as TextView
fun bind(info: ChapterInfo) {
val o = OsisParser()
val string = o.getVerse(info.book, info.vEnd).content
Log.d("PassageView", "Book: ${info.bibleBook}, Chapter: ${info.chapter}")
v setText string
}
} }

@ -1 +1 @@
Subproject commit 865d8ff6b859d1a08be4fe12e99473f481cd6f07 Subproject commit 00b9da93beac2d79f03c71b80c2b822fafa32a20