Android için esnek ve özelleştirilebilir tablo bileşeni. Jetpack Compose ile yazılmış, performanslı ve modern bir tablo kütüphanesi.
🎬 Demo Video
- ✅ Kolon Sürükle-Bırak: Kolonları sürükleyerek yeniden sıralayın
- ✅ Özelleştirilebilir Sürükleme İkonu: Kolon başlıklarında özel drag handle ikonu
- ✅ Satır Sıralama: Kolonlara göre artan/azalan sıralama
- ✅ Zebra Satırlar: Alternatif satır renkleri ile daha okunabilir tablolar
- ✅ Sabit Kolonlar: Sol tarafta sabitlenmiş kolonlar ile geniş tablolarda navigasyon
- ✅ Özelleştirilebilir Tema: Renkler, boyutlar ve stiller tamamen özelleştirilebilir
- ✅ Satır Seçimi: Tekli veya çoklu satır seçimi desteği
- ✅ Hover Efektleri: Satır üzerine gelince görsel geri bildirim
- ✅ Boş Durum ve Yükleme Durumu: Özelleştirilebilir boş/yükleniyor durumları
- ✅ Performanslı: LazyColumn kullanarak büyük veri setlerinde optimize edilmiş performans
- Min SDK: 24 (Android 7.0)
- Compile SDK: 36
- Kotlin: 2.0.21+
- Jetpack Compose: 2024.09.00+
- Java: 17+ (JitPack build için)
- Projenizin root
build.gradle.kts(veyabuild.gradle) dosyasına JitPack repository'sini ekleyin:
Kotlin DSL:
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.PREFER_SETTINGS)
repositories {
google()
mavenCentral()
maven { url = uri("https://jitpack.io") }
}
}Groovy:
allprojects {
repositories {
google()
mavenCentral()
maven { url 'https://jitpack.io' }
}
}app/build.gradle.kts(veyaapp/build.gradle) dosyanıza dependency ekleyin:
Kotlin DSL:
dependencies {
implementation("com.github.dilarakiraz.FlexTableSDK:flextable-core:VERSION")
}Groovy:
dependencies {
implementation 'com.github.dilarakiraz.FlexTableSDK:flextable-core:VERSION'
}Kullanılabilir Versiyonlar:
1.0.1- Son stabil sürüm (Java 17 gerekli)main-SNAPSHOT- En son geliştirme versiyonu (main branch'inden)- Commit hash'i de kullanabilirsiniz:
com.github.dilarakiraz.FlexTableSDK:flextable-core:COMMIT_HASH
Örnek:
dependencies {
implementation("com.github.dilarakiraz.FlexTableSDK:flextable-core:1.0.1")
}Not: JitPack modül path'i için format:
com.github.USERNAME.REPO:MODULE_NAME:VERSION
- Repo'yu klonlayın:
git clone https://github.com/dilarakiraz/FlexTableSDK.git-
Projenize modül olarak ekleyin:
- Android Studio'da
File > New > Import Module flextable-coreklasörünü seçin
- Android Studio'da
-
settings.gradle.ktsdosyanıza ekleyin:
include(":flextable-core")
project(":flextable-core").projectDir = File("../FlexTableSDK/flextable-core")build.gradle.ktsdosyanıza dependency ekleyin:
dependencies {
implementation(project(":flextable-core"))
}import com.dilara.flextable.core.component.ScrollableTable
import com.dilara.flextable.core.model.*
import com.dilara.flextable.core.state.rememberTableState
val columns = listOf(
ColumnDef(
id = "name",
title = "İsim",
width = 150.dp,
cellRenderer = { user -> Text(user.name) },
sortable = true,
sortSelector = { it.name }
),
ColumnDef(
id = "age",
title = "Yaş",
width = 100.dp,
alignment = Alignment.CenterHorizontally,
cellRenderer = { user -> Text(user.age.toString()) },
sortable = true,
sortSelector = { it.age }
)
)
val tableState = rememberTableState()
ScrollableTable(
data = TableData(
columns = columns,
rows = users
),
config = TableConfig(
enableColumnReordering = true,
stripedRows = true,
hoverEffect = true
),
state = tableState,
onSort = { column, order ->
// Sıralama işlemi
},
onRowClick = { user ->
// Satır tıklama işlemi
}
)ScrollableTable(
data = tableData,
config = TableConfig(
enableColumnReordering = true
),
state = tableState,
onReorderColumns = { newOrder ->
// Kolon sıralaması değişti
println("Yeni sıra: $newOrder")
}
)ColumnDef(
id = "column1",
title = "Kolon 1",
dragHandleRenderer = {
Icon(
imageVector = Icons.Default.DragHandle,
contentDescription = "Sürükle"
)
}
)ColumnDef(
id = "id",
title = "ID",
width = 100.dp,
isFixed = true, // Bu kolon sabitlenecek
cellRenderer = { item -> Text(item.id.toString()) }
)val customTheme = TableTheme(
headerBackground = Color(0xFF6200EE),
headerTextColor = Color.White,
rowBackground = Color.White,
rowBackgroundAlternate = Color(0xFFF5F5F5),
hoverRowBackground = Color(0xFFE3F2FD)
)
ScrollableTable(
data = tableData,
theme = customTheme
)Ana tablo bileşeni. Tüm tablo işlevselliğini sağlar.
Parametreler:
data: TableData<T>- Tablo verisi (kolonlar ve satırlar)config: TableConfig- Tablo yapılandırmasıtheme: TableTheme- Tablo temasıstate: TableState<T>- Tablo durumu (sıralama, kolon sırası, vb.)onRowClick: ((T) -> Unit)?- Satır tıklama callback'ionCellClick: ((T, ColumnDef<T>) -> Unit)?- Hücre tıklama callback'ionSort: ((ColumnDef<T>, SortOrder) -> Unit)?- Sıralama callback'ionReorderColumns: ((List<String>) -> Unit)?- Kolon sıralama callback'i (yeni sıralama: kolon ID listesi)
Kolon tanımı. Her kolonun özelliklerini belirler.
Ana Özellikler:
id: String- Kolon benzersiz ID'sititle: String- Kolon başlığıwidth: Dp- Kolon genişliğiisFixed: Boolean- Sol tarafta sabitlenmiş kolonsortable: Boolean- Sıralanabilir koloncellRenderer: @Composable (T) -> Unit- Hücre içeriği renderer'ıdragHandleRenderer: @Composable (() -> Unit)?- Özel sürükleme ikonu
Tablo görünüm ve davranış yapılandırması.
Ana Ayarlar:
enableColumnReordering: Boolean- Kolon sıralaması aktifstripedRows: Boolean- Zebra çizgili satırlarhoverEffect: Boolean- Hover efekticlickableRows: Boolean- Tıklanabilir satırlarrowHeight: Dp- Satır yüksekliğiheaderHeight: Dp- Başlık yüksekliği
Katkılarınızı bekliyoruz! Lütfen önce bir issue açarak değişiklik önerilerinizi paylaşın.
- Fork edin
- Feature branch oluşturun (
git checkout -b feature/amazing-feature) - Commit edin (
git commit -m 'feat: amazing feature eklendi') - Push edin (
git push origin feature/amazing-feature) - Pull Request açın
Bu proje MIT lisansı altında lisanslanmıştır. Detaylar için LICENSE dosyasına bakın.
Dilara - @dilarakiraz
Projeyi beğendiyseniz ⭐ yıldız vermeyi unutmayın!
