【问题标题】:How to display recyclerview in Tab layout using kotlin?如何使用 kotlin 在 Tab 布局中显示 recyclerview?
【发布时间】:2018-08-30 14:53:08
【问题描述】:

我是 Android 新手,我有一个由 kotlin 语言开发的应用程序。我的一个活动包含带有片段的选项卡布局(两个选项卡)。每个选项卡都有一个带有数据的 recyclerview 列表。我对显示我的 recyclerview 感到震惊在标签视图中使用数据。这是我尝试过的。

main.kt

private fun setupViewPager(viewPager: ViewPager) {
        val adapter = ViewPagerAdapter(supportFragmentManager)
        adapter.addFragment(OneFragment(), "RECEIVE LIST")
        adapter.addFragment(TwoFragment(), "SEND LIST")
        viewPager.adapter = adapter
    }

    internal inner class ViewPagerAdapter(manager: FragmentManager) : FragmentPagerAdapter(manager) {
        private val mFragmentList = ArrayList<Fragment>()
        private val mFragmentTitleList = ArrayList<String>()

        override fun getItem(position: Int): Fragment {
            return mFragmentList[position]
        }

        override fun getCount(): Int {
            return mFragmentList.size
        }

        fun addFragment(fragment: Fragment, title: String) {
            mFragmentList.add(fragment)
            mFragmentTitleList.add(title)
        }

        override fun getPageTitle(position: Int): CharSequence {
            return mFragmentTitleList[position]
        }
    }

TransactionRecyclerAdapter.kt

enum class TransactionAdapterDirection {
    INCOMING, OUTGOING
}

class TransactionRecyclerAdapter(private val transactionList: List<TransactionEntity>,
                                 val appDatabase: AppDatabase,
                                 private val direction: TransactionAdapterDirection,
                                 val networkDefinitionProvider: NetworkDefinitionProvider) : RecyclerView.Adapter<TransactionViewHolder>() {

    override fun getItemCount() = transactionList.size

    override fun onBindViewHolder(holder: TransactionViewHolder, position: Int) = holder.bind(transactionList[position], appDatabase)

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): TransactionViewHolder {
        val itemView = LayoutInflater.from(parent.context).inflate(R.layout.transaction_item, parent,false)
        return TransactionViewHolder(itemView,direction,networkDefinitionProvider)

OneFragment.kt

class OneFragment : Fragment() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

    }

    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
        // Inflate the layout for this fragment
        //return inflater!!.inflate(R.layout.frag_one, container, false)

        val rootView = inflater!!.inflate(R.layout.frag_one, container, false)
        val recyclerView = rootView.findViewById<RecyclerView>(R.id.transaction_recycler_in) as RecyclerView
        recyclerView.setHasFixedSize(true);
        recyclerView
                .setLayoutManager(LinearLayoutManager(getActivity()));//Linear Items

        recyclerView.adapter = TransactionRecyclerAdapter()// struck with here 
        recyclerView.layoutManager = LinearLayoutManager(context)
        return rootView
    }
}

【问题讨论】:

    标签: android android-recyclerview kotlin android-tablayout


    【解决方案1】:

    变化:

            recyclerView.setHasFixedSize(true);
            recyclerView.setLayoutManager(LinearLayoutManager(getActivity()));
    
            recyclerView.adapter = TransactionRecyclerAdapter()// struck with here 
            recyclerView.layoutManager = LinearLayoutManager(context)
    

    收件人:

    linearLayoutManager = LinearLayoutManager(getActivity(), LinearLayout.VERTICAL, false)
            recyclerView?.layoutManager = linearLayoutManager
            recyclerView?.adapter = TransactionRecyclerAdapter() // Your adapter
            recyclerView?.setHasFixedSize(true);
    

    别忘了加上:

    private var linearLayoutManager: LinearLayoutManager? = null
    

    在上面的onCreateView()。你实际上把它弄得太复杂了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-02
      • 2016-08-12
      • 1970-01-01
      • 2020-10-26
      • 1970-01-01
      • 1970-01-01
      • 2016-05-22
      • 1970-01-01
      相关资源
      最近更新 更多