3 Temmuz 2020 Cuma

Kotlin-5 (Android kotlin gridview - Ekranda ızgara(tablo) görünümü)

Merhaba,

bu yadımda Android üzerinde Gridview gösterimini paylaşacağım. Üzerinde çalıştığımız uygulama Kotlin Android projesi olacaktır.

Uygulamada yan yana ve alt alta meyve resimlerini gösterecek şekilde bir tasarım yapılacaktı. Bu tasarım ile hem meyvelerin isimleri hem de görselleri belli bir hizada telefon ekranında gösterilecektir.

 

ilk olarak Android Studio ile bir kotlin projesi oluşturun.

 

activity_main.xml dosyasına giderek bu dosyaya bir gridview komponent'i ekleyin.

activity_main.xml dosyasının son hali aşağıdaki gibi olacaktı.



<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">

<GridView
android:id="@+id/fruitsGridView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:columnWidth="150dp"
android:horizontalSpacing="15dp"
android:numColumns="auto_fit"
android:verticalSpacing="15dp" />

</androidx.constraintlayout.widget.ConstraintLayout>

 

 

activity_main.xml dosyasının yanında fruit_item.xml diye bir xml dosyası daha ekleyin. Görüntünün blok şeklinde olması için fruit_item.xml dosyasını LinearLayout olarak tasarlayın. fruit_item.xml dosyasında meyvelerin resim ve görsellerini göstermek için bir ImageView ve bir TextView ekleyin.

 

fruit_item.xml dosyasının son hali aşağıdaki gibi olacaktır.



<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="150dp"
android:layout_height="wrap_content"
android:background="#ddd"
android:gravity="center"
android:orientation="vertical"
android:padding="15dp">

<ImageView
android:id="@+id/fruitImage"
android:layout_width="100dp"
android:layout_height="100dp"
/>

<TextView
android:id="@+id/fruitName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:textSize="20sp" />
</LinearLayout>

 

 

fruit bilgilerini adapter'a vermek ve GridView da göstermek için Fruit adında bir kotlin class'ı oluşturun.

Fruit.kt dosyasının içeriği aşağıdaki gibi olacaktır.



class Fruit {
var name: String? = null
var image: Int? = null

constructor(name: String, image: Int) {
this.name = name
this.image = image
}

override fun toString(): String {
return "Fruit(name=$name, image=$image)"
}
}


 

GridView'in içini doldurmak için FruitAdapter adında bir kotlin class'ı oluşturun. Bu class BaseAdapter'i extend edecektir. Extend işleminden sonra getCount, getItem, getItemId, getView methodlarını override ederek Fruit class'ına göre doldurulmalıdır.

FruitAdapter.kt dosyasının son hali aşağıdaki gibi olmalıdır.



class FruitAdapter : BaseAdapter {
var fruitList = ArrayList<Fruit>()
var context: Context? = null

constructor(context: Context, fruitList: ArrayList<Fruit>) : super() {
this.context = context
this.fruitList = fruitList
}

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

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

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

override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View {
val fruit = this.fruitList[position]

var inflator = context!!.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater
var fruitItemView = inflator.inflate(R.layout.fruit_item, null)
fruitItemView.fruitName.text = fruit.name!!
fruitItemView.fruitImage.setImageResource(fruit.image!!)

fruitItemView.fruitImage.setOnClickListener {
println("Current fruit : ${fruit.toString()}")
}

return fruitItemView
}
}

 

  

Son olarak MainActivity.kt' de adapter ve fruits adında iki adet global variable oluşturun. onCreate methodunda adapter ve fruits'in içini doldurun ve gridView'a set edin.

 

MainActivity.kt dosyasının son hali aşağıdaki gibi olmalıdır.



class MainActivity : AppCompatActivity() {

var adapter: FruitAdapter? = null
var fruits = ArrayList<Fruit>()

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)

fruits.add(Fruit("Watermelon", R.drawable.watermelon_icon))
fruits.add(Fruit("Apple", R.drawable.apple_icon))
fruits.add(Fruit("Lemon", R.drawable.lemon_icon))
fruits.add(Fruit("Strawberry", R.drawable.strawberry_icon))
fruits.add(Fruit("Cherry", R.drawable.cherry_icon))
fruits.add(Fruit("Banana", R.drawable.banana_icon))

adapter = FruitAdapter(this, fruits)

fruitsGridView.adapter = adapter
}
}

 

 


uygulamanın kaynak kodlarına aşağıdaki linkten erişebilirsiniz.

github : https://github.com/lvntyldz/tutorials/tree/master/kotlin-android-app-examples/05-grid-view


 

Hiç yorum yok:

Yorum Gönder