在K项目写一个完整列表的基本结构 by Kotlin

218 阅读1分钟

ViewHolder的 item

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"
              android:orientation="vertical"
              android:background="@drawable/bg_corner_4_white"
              android:layout_width="match_parent"
              android:layout_height="wrap_content">
    <TextView
            android:id="@+id/topicTitle"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="@dimen/x16"
            tools:text="WeChat: the most powerful app in"
            android:textColor="@color/c_2b2d44"
            android:textSize="@dimen/text_size_16"/>
</LinearLayout>

Bean

/**
 * @Author:zhangchenzhou
 * @Date: 2019/9/9  16:36
 *@Description:
 */
data class SelectTopicBean(var title:String)

ViewHolder

import android.support.v7.widget.RecyclerView
import android.view.View
import android.widget.TextView
/**
 * @Author:zhangchenzhou
 * @Date: 2019/9/9  16:30
 *@Description:
 */
class SelectTopicVH(itemView: View) : RecyclerView.ViewHolder(itemView){
    var text: TextView? = null
    init {
        text = itemView.findViewById<TextView>(R.id.topicTitle)
    }
}

Adapter

/**
 * @Author:zhangchenzhou
 * @Date: 2019/9/9  16:36
 *@Description:
 */
data class SelectTopicBean(var title:String)

activity的xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    <android.support.v7.widget.Toolbar
            android:id="@+id/common_toolbar"
            android:layout_width="match_parent"
            android:layout_height="51dp"
            android:background="@drawable/bg_toolbar"
            android:fitsSystemWindows="true">

        <TextView
                android:id="@+id/toolbar_title"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:ellipsize="end"
                android:gravity="center"
                android:maxEms="10"
                android:maxWidth="@dimen/x239"
                android:singleLine="true"
                android:textColor="@color/black1"
                android:textSize="@dimen/x16"
                android:textStyle="bold" />
    </android.support.v7.widget.Toolbar>
    <android.support.v7.widget.RecyclerView
            android:id="@+id/topicList"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_above="@+id/mLlShowAll"
            android:layout_below="@+id/common_toolbar"
            android:cacheColorHint="@color/transparent"
            android:divider="@null"
            android:listSelector="@color/transparent"
            android:scrollbars="none" />
</LinearLayout>

Activity的View

import com.k.a.model.SelectTopicBean
import com.k.a.mvp.IView

/**
 * @Author:zhangchenzhou
 * @Date: 2019/9/9  16:20
 *@Description:
 */
interface ITopicView: IView {
    fun setDatas(list:MutableList<SelectTopicBean>)
}

Activity

import android.os.Bundle
import com.k.a.BaseActivity
import com.k.a.R
import com.k.a.model.SelectTopicBean
import com.k.a.view.TryCatchLayoutManager
import com.k.a.vipcoach.selecttopic.adapter.SelectTopicAdapter
import com.k.a.vipcoach.selecttopic.presenter.ImplSelectTopicPresenter
import com.k.a.vipcoach.selecttopic.view.ITopicView
import kotlinx.android.synthetic.main.activity_select_topic.*

/**
 * @Author:zhangchenzhou
 * @Date: 2019/9/9  15:26
 *@Description:
 */
class SelectTopicActivity :BaseActivity(), ITopicView {
    override fun getContentViewLayoutID() = R.layout.activity_select_topic
    var mAdapter:SelectTopicAdapter= SelectTopicAdapter(this)
    var mPresenter:ImplSelectTopicPresenter= ImplSelectTopicPresenter()
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        initView()
        initData()

    }

    fun initView(){
        topicList.layoutManager = TryCatchLayoutManager(this)
    }
    fun initData(){
        commonPperation.setTitle(getString(R.string.topic_title))
        mPresenter.attachView(this)
        mPresenter.getList()
    }

    override fun setDatas(list: MutableList<SelectTopicBean>) {
        mAdapter.setList(list)
        topicList.adapter = mAdapter
    }
}

presenter接口

import com.k.android.mvp.BasePresenter
import com.k.android.vipcoach.selecttopic.view.ITopicView

/**
 * @Author:zhangchenzhou
 * @Date: 2019/9/9  16:24
 *@Description:
 */
abstract class AbsSelectTopicPresenter: BasePresenter<ITopicView>() {
    abstract fun getList()
}

presenter实现类

import com.k.android.model.SelectTopicBean
/**
 * @Author:zhangchenzhou
 * @Date: 2019/9/9  16:26
 *@Description:
 */
class ImplSelectTopicPresenter :AbsSelectTopicPresenter(){
    override fun getList() {
        var a:MutableList<SelectTopicBean> = mutableListOf()
        for(i in 1..10){
            a.add(SelectTopicBean("WeChat: the most powerful app in the world?"))
        }
        view.setDatas(a)
    }

}