Привязать данные RecyclerView к новой активности (Android-Kotlin)

Для MySQL вы можете напрямую помещать условия в функцию SUM(), и она будет оценена как Boolean 0 или 1 , и вы можете иметь свой счет на основе ваших критериев, не используя IF/CASE

SELECT
    company_name,  
    SUM(action = 'EMAIL')AS Email,
    SUM(action = 'PRINT' AND pagecount = 1)AS Print1Pages,
    SUM(action = 'PRINT' AND pagecount = 2)AS Print2Pages,
    SUM(action = 'PRINT' AND pagecount = 3)AS Print3Pages
FROM t
GROUP BY company_name

DEMO

0
задан digiadit 24 March 2019 в 19:39
поделиться

1 ответ

Оптимизированный код для передачи данных из RecyclerView в Activity:

Это код адаптера:

  1. Я не использовал синтетический Kotlin и из-за проблемы использовали представление в onBindViewHolder(), каждый раз, когда оно извлекает представление и показывает его, и это не лучшая практика, мы используем ViewHolder только для достижения этой цели и достижения кэширования. Посмотрите, как я делаю это во внутреннем классе.

  2. Для оптимизированного кода я использовал эту прекрасную библиотеку. Anko - это библиотека Kotlin, которая делает разработку приложений для Android быстрее и проще. Он делает ваш код чистым и легким для чтения, а также позволяет забыть о неровностях Android SDK для Java.

    class TreeAdapter(private val listSurveyData: List<Tree>, val context: Context) : RecyclerView.Adapter<TreeAdapter.TreeViewHolder>() {
    
    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): 
    TreeViewHolder {
    
    val view = LayoutInflater.from(parent.context).inflate(R.layout.item_layout_tree, parent, false)
    
     return TreeViewHolder(view)
    
      }
    
    override fun getItemCount(): Int = listSurveyData.size
    
    override fun onBindViewHolder(holder: TreeViewHolder, position: Int) {
        holder.setUpViewHolder(listSurveyData[position])
    }
    
    inner class TreeViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
        private val txtSpeciesName: TextView = itemView.txt_speciesName
        private val ctlContainer: ConstraintLayout = itemView.ctl_container
    
        fun setUpViewHolder(tree: Tree) {
            txtSpeciesName.text = tree.species
            ctlContainer.setOnClickListener {
                context.startActivity<MainActivity>(SURVERY_DATA_KEY to tree)
            }
        }
    }
    

    }

Кроме того, как это использовать!

В разделе «Действия: также расширяйте класс данных Tree с помощью Serializable!

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        val tree = intent.getSerializableExtra(SURVERY_DATA_KEY) as Tree
    } 
}
0
ответ дан Sharan Salian 24 March 2019 в 19:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: