|
|
|
@ -4,7 +4,7 @@ import android.graphics.drawable.GradientDrawable |
|
|
|
|
import android.view.LayoutInflater |
|
|
|
|
import android.view.View |
|
|
|
|
import android.view.ViewGroup |
|
|
|
|
import android.widget.TextView |
|
|
|
|
import android.widget.GridLayout |
|
|
|
|
import androidx.paging.PagedListAdapter |
|
|
|
|
import androidx.recyclerview.widget.DiffUtil |
|
|
|
|
import androidx.recyclerview.widget.RecyclerView |
|
|
|
@ -12,10 +12,12 @@ import io.legado.app.R |
|
|
|
|
import io.legado.app.data.entities.BookSource |
|
|
|
|
import io.legado.app.lib.theme.ColorUtils |
|
|
|
|
import io.legado.app.utils.gone |
|
|
|
|
import io.legado.app.utils.invisible |
|
|
|
|
import io.legado.app.utils.visible |
|
|
|
|
import kotlinx.android.synthetic.main.item_find_book.view.* |
|
|
|
|
import kotlinx.android.synthetic.main.item_text.view.* |
|
|
|
|
import org.jetbrains.anko.sdk27.listeners.onClick |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class FindBookAdapter:PagedListAdapter<BookSource, FindBookAdapter.MyViewHolder>(DIFF_CALLBACK) { |
|
|
|
|
|
|
|
|
|
var exIndex = 0 |
|
|
|
@ -43,18 +45,34 @@ class FindBookAdapter:PagedListAdapter<BookSource, FindBookAdapter.MyViewHolder> |
|
|
|
|
tv_name.text = bookSource.bookSourceName |
|
|
|
|
ll_title.onClick { |
|
|
|
|
val oldEx = exIndex |
|
|
|
|
exIndex = position |
|
|
|
|
if (exIndex == position) { |
|
|
|
|
exIndex = -1 |
|
|
|
|
} else { |
|
|
|
|
exIndex = position |
|
|
|
|
notifyItemChanged(position) |
|
|
|
|
} |
|
|
|
|
notifyItemChanged(oldEx) |
|
|
|
|
notifyItemChanged(position) |
|
|
|
|
} |
|
|
|
|
if (exIndex == position) { |
|
|
|
|
gl_child.invisible() |
|
|
|
|
gl_child.visible() |
|
|
|
|
bookSource.getExploreRule().getExploreKinds(bookSource.bookSourceUrl)?.let { |
|
|
|
|
var rowNum = 0 |
|
|
|
|
var columnNum = 0 |
|
|
|
|
gl_child.removeAllViews() |
|
|
|
|
it.map { kind -> |
|
|
|
|
val tv = TextView(context) |
|
|
|
|
tv.text = kind.title |
|
|
|
|
tv.onClick { } |
|
|
|
|
gl_child.addView(tv) |
|
|
|
|
val tv = LayoutInflater.from(context) |
|
|
|
|
.inflate(R.layout.item_text, gl_child, false) |
|
|
|
|
tv.text_view.text = kind.title |
|
|
|
|
val rowSpecs = GridLayout.spec(rowNum, 1.0f) |
|
|
|
|
val colSpecs = GridLayout.spec(columnNum, 1.0f) |
|
|
|
|
val params = GridLayout.LayoutParams(rowSpecs, colSpecs) |
|
|
|
|
gl_child.addView(tv, params) |
|
|
|
|
if (columnNum < 2) { |
|
|
|
|
columnNum++ |
|
|
|
|
} else { |
|
|
|
|
columnNum = 0 |
|
|
|
|
rowNum++ |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
|