mirror of
				https://github.com/AdrianKuta/Expandable-RecyclerView.git
				synced 2025-10-31 08:53:41 +01:00 
			
		
		
		
	Expandable ReyclerView module
This commit is contained in:
		
							
								
								
									
										1
									
								
								expandable-recyclerview/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								expandable-recyclerview/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1 @@ | |||||||
|  | /build | ||||||
							
								
								
									
										51
									
								
								expandable-recyclerview/build.gradle
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										51
									
								
								expandable-recyclerview/build.gradle
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,51 @@ | |||||||
|  | apply plugin: 'com.android.library' | ||||||
|  | apply plugin: 'kotlin-android' | ||||||
|  | apply plugin: 'kotlin-android-extensions' | ||||||
|  |  | ||||||
|  | afterEvaluate { | ||||||
|  |     generateReleaseBuildConfig.enabled = false | ||||||
|  | } | ||||||
|  |  | ||||||
|  | android { | ||||||
|  |     compileSdkVersion 29 | ||||||
|  |     buildToolsVersion "29.0.2" | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     defaultConfig { | ||||||
|  |         minSdkVersion 23 | ||||||
|  |         targetSdkVersion 29 | ||||||
|  |         versionCode 1 | ||||||
|  |         versionName "0.0.1-alpha01" | ||||||
|  |  | ||||||
|  |         testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" | ||||||
|  |         consumerProguardFiles 'consumer-rules.pro' | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     buildTypes { | ||||||
|  |         release { | ||||||
|  |             minifyEnabled false | ||||||
|  |             proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |  | ||||||
|  | } | ||||||
|  |  | ||||||
|  | dependencies { | ||||||
|  |     implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" | ||||||
|  |     implementation 'androidx.appcompat:appcompat:1.1.0' | ||||||
|  |     implementation 'androidx.core:core-ktx:1.1.0' | ||||||
|  |     implementation "androidx.recyclerview:recyclerview:1.1.0" | ||||||
|  |     implementation "com.github.adriankuta:tree-structure:1.1.0" | ||||||
|  |  | ||||||
|  |     testImplementation 'junit:junit:4.12' | ||||||
|  |     androidTestImplementation 'androidx.test.ext:junit:1.1.1' | ||||||
|  |     androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0' | ||||||
|  | } | ||||||
|  |  | ||||||
|  | ext { | ||||||
|  |     PUBLISH_GROUP_ID = 'com.github.adriankuta' | ||||||
|  |     PUBLISH_ARTIFACT_ID = 'expandable-recyclerView' | ||||||
|  |     PUBLISH_VERSION = android.defaultConfig.versionName | ||||||
|  | } | ||||||
|  |  | ||||||
|  | apply from: "${rootProject.projectDir}/scripts/publish-mavencentral.gradle" | ||||||
							
								
								
									
										0
									
								
								expandable-recyclerview/consumer-rules.pro
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								expandable-recyclerview/consumer-rules.pro
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										21
									
								
								expandable-recyclerview/proguard-rules.pro
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								expandable-recyclerview/proguard-rules.pro
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,21 @@ | |||||||
|  | # Add project specific ProGuard rules here. | ||||||
|  | # You can control the set of applied configuration files using the | ||||||
|  | # proguardFiles setting in build.gradle. | ||||||
|  | # | ||||||
|  | # For more details, see | ||||||
|  | #   http://developer.android.com/guide/developing/tools/proguard.html | ||||||
|  |  | ||||||
|  | # If your project uses WebView with JS, uncomment the following | ||||||
|  | # and specify the fully qualified class name to the JavaScript interface | ||||||
|  | # class: | ||||||
|  | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { | ||||||
|  | #   public *; | ||||||
|  | #} | ||||||
|  |  | ||||||
|  | # Uncomment this to preserve the line number information for | ||||||
|  | # debugging stack traces. | ||||||
|  | #-keepattributes SourceFile,LineNumberTable | ||||||
|  |  | ||||||
|  | # If you keep the line number information, uncomment this to | ||||||
|  | # hide the original source file name. | ||||||
|  | #-renamesourcefileattribute SourceFile | ||||||
| @@ -0,0 +1,24 @@ | |||||||
|  | package com.github.adriankuta.expandable_recyclerview | ||||||
|  |  | ||||||
|  | import androidx.test.platform.app.InstrumentationRegistry | ||||||
|  | import androidx.test.ext.junit.runners.AndroidJUnit4 | ||||||
|  |  | ||||||
|  | import org.junit.Test | ||||||
|  | import org.junit.runner.RunWith | ||||||
|  |  | ||||||
|  | import org.junit.Assert.* | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * Instrumented test, which will execute on an Android device. | ||||||
|  |  * | ||||||
|  |  * See [testing documentation](http://d.android.com/tools/testing). | ||||||
|  |  */ | ||||||
|  | @RunWith(AndroidJUnit4::class) | ||||||
|  | class ExampleInstrumentedTest { | ||||||
|  |     @Test | ||||||
|  |     fun useAppContext() { | ||||||
|  |         // Context of the app under test. | ||||||
|  |         val appContext = InstrumentationRegistry.getInstrumentation().targetContext | ||||||
|  |         assertEquals("com.github.adriankuta.expandable_recyclerview.test", appContext.packageName) | ||||||
|  |     } | ||||||
|  | } | ||||||
							
								
								
									
										2
									
								
								expandable-recyclerview/src/main/AndroidManifest.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								expandable-recyclerview/src/main/AndroidManifest.xml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,2 @@ | |||||||
|  | <manifest xmlns:android="http://schemas.android.com/apk/res/android" | ||||||
|  |     package="com.github.adriankuta.expandable_recyclerview" /> | ||||||
| @@ -0,0 +1,19 @@ | |||||||
|  | package com.github.adriankuta.expandable_recyclerview | ||||||
|  |  | ||||||
|  | import com.github.adriankuta.datastructure.tree.TreeNode | ||||||
|  |  | ||||||
|  | open class ExpandableGroup<T>(value: T) : TreeNode<T>(value) { | ||||||
|  |  | ||||||
|  |     private var _isExpanded = false | ||||||
|  |     val isExpanded: Boolean | ||||||
|  |         get() = _isExpanded | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     open fun expand() { | ||||||
|  |         _isExpanded = true | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     open fun collapse() { | ||||||
|  |         _isExpanded = false | ||||||
|  |     } | ||||||
|  | } | ||||||
| @@ -0,0 +1,12 @@ | |||||||
|  | package com.github.adriankuta.expandable_recyclerview | ||||||
|  |  | ||||||
|  | import android.content.Context | ||||||
|  | import android.util.AttributeSet | ||||||
|  | import androidx.recyclerview.widget.RecyclerView | ||||||
|  |  | ||||||
|  | class ExpandableRecyclerView @JvmOverloads constructor( | ||||||
|  |     context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0 | ||||||
|  | ) : RecyclerView(context, attrs, defStyleAttr) { | ||||||
|  |  | ||||||
|  |  | ||||||
|  | } | ||||||
| @@ -0,0 +1,26 @@ | |||||||
|  | package com.github.adriankuta.expandable_recyclerview | ||||||
|  |  | ||||||
|  | import android.view.ViewGroup | ||||||
|  | import androidx.recyclerview.widget.RecyclerView | ||||||
|  |  | ||||||
|  | abstract class MultilevelRecyclerViewAdapter<T, VH: RecyclerView.ViewHolder>: RecyclerView.Adapter<VH>() { | ||||||
|  |  | ||||||
|  |     abstract fun getExpandableGroups(): ExpandableGroup<T> | ||||||
|  |  | ||||||
|  |     override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): VH { | ||||||
|  |         TODO("not implemented") //To change body of created functions use File | Settings | File Templates. | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     override fun getItemCount(): Int { | ||||||
|  |         getExpandableGroups().toList() | ||||||
|  |         return getExpandableGroups().nodeCount() | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     override fun onBindViewHolder(holder: VH, position: Int) { | ||||||
|  |         TODO("not implemented") //To change body of created functions use File | Settings | File Templates. | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     override fun getItemViewType(position: Int): Int { | ||||||
|  |         return super.getItemViewType(position) | ||||||
|  |     } | ||||||
|  | } | ||||||
| @@ -0,0 +1,9 @@ | |||||||
|  | package com.github.adriankuta.expandable_recyclerview; | ||||||
|  |  | ||||||
|  | public class Temp { | ||||||
|  |  | ||||||
|  |     public static void main(String[] args) { | ||||||
|  |         ExpandableGroup<String> group = new ExpandableGroup<>(""); | ||||||
|  |  | ||||||
|  |     } | ||||||
|  | } | ||||||
							
								
								
									
										3
									
								
								expandable-recyclerview/src/main/res/values/strings.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								expandable-recyclerview/src/main/res/values/strings.xml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | |||||||
|  | <resources> | ||||||
|  |     <string name="app_name">Expandable RecyclerView</string> | ||||||
|  | </resources> | ||||||
| @@ -0,0 +1,17 @@ | |||||||
|  | package com.github.adriankuta.expandable_recyclerview | ||||||
|  |  | ||||||
|  | import org.junit.Test | ||||||
|  |  | ||||||
|  | import org.junit.Assert.* | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * Example local unit test, which will execute on the development machine (host). | ||||||
|  |  * | ||||||
|  |  * See [testing documentation](http://d.android.com/tools/testing). | ||||||
|  |  */ | ||||||
|  | class ExampleUnitTest { | ||||||
|  |     @Test | ||||||
|  |     fun addition_isCorrect() { | ||||||
|  |         assertEquals(4, 2 + 2) | ||||||
|  |     } | ||||||
|  | } | ||||||
		Reference in New Issue
	
	Block a user