Actions

Difference between revisions of "Kotlin Adapter"

From zen2

(Created page with "*Create a List View to display your items *In a separate layout file create an item view *Create a new file with Kotlin Class, call it XXXAdapter or whatever. eg <pre> class C...")
 
Line 34: Line 34:
 
         return categories.count()
 
         return categories.count()
 
     }
 
     }
 +
}
 +
</pre>
  
 +
Then in MainActivity or where you are calling this from:
 +
<pre>
 +
class MainActivity : AppCompatActivity() {
 +
 +
    lateinit var adapter:CategoryAdapter
 +
 +
    override fun onCreate(savedInstanceState: Bundle?) {
 +
        super.onCreate(savedInstanceState)
 +
        setContentView(R.layout.activity_main)
 +
        adapter = CategoryAdapter(this,DataService.categories)
 +
        categoryListView.adapter = adapter
 +
    }
 
}
 
}
 
</pre>
 
</pre>

Revision as of 20:38, 29 November 2017

  • Create a List View to display your items
  • In a separate layout file create an item view
  • Create a new file with Kotlin Class, call it XXXAdapter or whatever. eg
class CategoryAdapter(context:Context, categories:List<Category>): BaseAdapter() {}

You will have to override getView, getItem, getItemId, getCount

class CategoryAdapter(context:Context, categories:List<Category>): BaseAdapter() {

    val context = context
    val categories = categories

    override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View {
        val categoryView :View

        categoryView = LayoutInflater.from(context).inflate(R.layout.category_list_item,null)
      
        val resourceID = context.resources.getIdentifier(categories[position].image,"drawable",context.packageName)
        categoryView.categoryImage.setImageResource(resourceID)
        categoryView.categoryText.text = categories[position].title
        return categoryView
    }

    override fun getItem(position: Int): Any {
        return categories[position]
    }

    override fun getItemId(position: Int): Long {
        return 0
    }

    override fun getCount(): Int {
        return categories.count()
    }
}

Then in MainActivity or where you are calling this from:

class MainActivity : AppCompatActivity() {

    lateinit var adapter:CategoryAdapter

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        adapter = CategoryAdapter(this,DataService.categories)
        categoryListView.adapter = adapter
    }
}