├── .gitignore
├── README.md
├── app
├── .gitignore
├── build.gradle
├── proguard-rules.pro
└── src
│ ├── androidTest
│ └── java
│ │ └── com
│ │ └── itcast
│ │ └── mobilesafe
│ │ └── test
│ │ └── ExampleInstrumentedTest.java
│ ├── main
│ ├── AndroidManifest.xml
│ ├── java
│ │ └── com
│ │ │ └── itcast
│ │ │ └── mobilesafe
│ │ │ └── test
│ │ │ ├── CheeseDynamicAdapter.java
│ │ │ ├── Cheeses.java
│ │ │ └── GridActivity.java
│ └── res
│ │ ├── layout
│ │ ├── activity_grid.xml
│ │ └── item_grid.xml
│ │ ├── mipmap-hdpi
│ │ └── ic_launcher.png
│ │ ├── mipmap-mdpi
│ │ └── ic_launcher.png
│ │ ├── mipmap-xhdpi
│ │ └── ic_launcher.png
│ │ ├── mipmap-xxhdpi
│ │ └── ic_launcher.png
│ │ ├── mipmap-xxxhdpi
│ │ └── ic_launcher.png
│ │ ├── values-w820dp
│ │ └── dimens.xml
│ │ └── values
│ │ ├── colors.xml
│ │ ├── dimens.xml
│ │ ├── integers.xml
│ │ ├── strings.xml
│ │ └── styles.xml
│ └── test
│ └── java
│ └── com
│ └── itcast
│ └── mobilesafe
│ └── test
│ └── ExampleUnitTest.java
├── build.gradle
├── dynamicgrid
├── AndroidManifest.xml
├── build.gradle
├── build
│ ├── generated
│ │ └── source
│ │ │ ├── buildConfig
│ │ │ ├── androidTest
│ │ │ │ └── debug
│ │ │ │ │ └── org
│ │ │ │ │ └── askerov
│ │ │ │ │ └── dynamicgrid
│ │ │ │ │ └── test
│ │ │ │ │ └── BuildConfig.java
│ │ │ └── debug
│ │ │ │ └── org
│ │ │ │ └── askerov
│ │ │ │ └── dynamicgrid
│ │ │ │ └── BuildConfig.java
│ │ │ └── r
│ │ │ ├── androidTest
│ │ │ └── debug
│ │ │ │ └── org
│ │ │ │ └── askerov
│ │ │ │ └── dynamicgrid
│ │ │ │ ├── R.java
│ │ │ │ └── test
│ │ │ │ └── R.java
│ │ │ └── debug
│ │ │ └── org
│ │ │ └── askerov
│ │ │ └── dynamicgrid
│ │ │ └── R.java
│ ├── intermediates
│ │ ├── blame
│ │ │ └── res
│ │ │ │ └── androidTest
│ │ │ │ └── debug
│ │ │ │ └── multi
│ │ │ │ └── values.json
│ │ ├── bundles
│ │ │ └── debug
│ │ │ │ ├── AndroidManifest.xml
│ │ │ │ ├── R.txt
│ │ │ │ └── res
│ │ │ │ └── values
│ │ │ │ └── values.xml
│ │ ├── incremental
│ │ │ ├── compileDebugAidl
│ │ │ │ └── dependency.store
│ │ │ ├── compileDebugAndroidTestAidl
│ │ │ │ └── dependency.store
│ │ │ ├── mergeDebugAndroidTestResources
│ │ │ │ ├── compile-file-map.properties
│ │ │ │ ├── merged.dir
│ │ │ │ │ └── values
│ │ │ │ │ │ └── values.xml
│ │ │ │ └── merger.xml
│ │ │ ├── mergeDebugAssets
│ │ │ │ └── merger.xml
│ │ │ ├── mergeDebugShaders
│ │ │ │ └── merger.xml
│ │ │ └── packageDebugResources
│ │ │ │ ├── compile-file-map.properties
│ │ │ │ ├── merged.dir
│ │ │ │ └── values
│ │ │ │ │ └── values.xml
│ │ │ │ └── merger.xml
│ │ ├── manifest
│ │ │ └── androidTest
│ │ │ │ └── debug
│ │ │ │ └── AndroidManifest.xml
│ │ ├── manifests
│ │ │ └── aapt
│ │ │ │ └── debug
│ │ │ │ └── AndroidManifest.xml
│ │ ├── res
│ │ │ ├── merged
│ │ │ │ └── androidTest
│ │ │ │ │ └── debug
│ │ │ │ │ └── values
│ │ │ │ │ └── values.xml
│ │ │ └── resources-debug-androidTest.ap_
│ │ └── symbols
│ │ │ └── androidTest
│ │ │ └── debug
│ │ │ └── R.txt
│ └── outputs
│ │ └── aar
│ │ └── dynamicgrid-debug.aar
├── res
│ └── values
│ │ ├── dimens.xml
│ │ └── id.xml
└── src
│ └── org
│ └── askerov
│ └── dynamicgrid
│ ├── AbstractDynamicGridAdapter.java
│ ├── BaseDynamicGridAdapter.java
│ ├── DynamicGridAdapterInterface.java
│ ├── DynamicGridUtils.java
│ └── DynamicGridView.java
├── gradle.properties
├── gradle
└── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
└── settings.gradle
/.gitignore:
--------------------------------------------------------------------------------
1 | *.iml
2 | .gradle
3 | /local.properties
4 | /.idea/workspace.xml
5 | /.idea/libraries
6 | .DS_Store
7 | /build
8 | /captures
9 | .externalNativeBuild
10 | /.idea
11 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # 最火Android开源项目DynamicGridView使用
2 |
3 | 开源项目地址:[https://github.com/open-android/DynamicGridView](https://github.com/open-android/DynamicGridView)
4 |
5 | # 运行效果
6 | 
7 |
8 | * 爱生活,爱学习,更爱做代码的搬运工,分类查找更方便请下载黑马助手app
9 |
10 |
11 | 
12 |
13 | ## 使用步骤
14 | ### 1. 在project的build.gradle添加如下代码(如下图)
15 |
16 | allprojects {
17 | repositories {
18 | ...
19 | maven { url "https://jitpack.io" }
20 | }
21 | }
22 |
23 | 
24 |
25 | ### 2. 在Module的build.gradle添加依赖
26 |
27 | compile 'com.github.open-android:DynamicGridView:0.1.0'
28 |
29 | ### 3. 复制如下代码到xml
30 |
31 |
37 |
38 |
39 | ### 4. 复制如下代码到Activity
40 |
41 |
42 | gridView = (DynamicGridView) findViewById(R.id.dynamic_grid);
43 | // 第一个参数:上下文
44 | // 第二个参数:adapter展示需要用到的集合数据
45 | // 第三个参数:gridview一共有多少列
46 | gridView.setAdapter(new MyDynamicGridAdapter(this, itemsList, 3));
47 | gridView.setOnDragListener(new DynamicGridView.OnDragListener() {
48 | @Override
49 | public void onDragStarted(int position) {
50 | Log.d(TAG, "drag started at position " + position);
51 | }
52 |
53 | @Override
54 | public void onDragPositionsChanged(int oldPosition, int newPosition) {
55 | Log.d(TAG, String.format("drag item position changed from %d to %d", oldPosition, newPosition));
56 | }
57 | });
58 | gridView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
59 | @Override
60 | public boolean onItemLongClick(AdapterView> parent, View view, int position, long id) {
61 | gridView.startEditMode(position);
62 | return true;
63 | }
64 | });
65 |
66 | gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
67 | @Override
68 | public void onItemClick(AdapterView> parent, View view, int position, long id) {
69 | Toast.makeText(GridActivity.this, parent.getAdapter().getItem(position).toString(),
70 | Toast.LENGTH_SHORT).show();
71 | }
72 | });
73 |
74 | @Override
75 | public void onBackPressed() {
76 |
77 | if (gridView.isEditMode()) {
78 | gridView.stopEditMode();
79 | } else {
80 | super.onBackPressed();
81 | //进行数据持久化操作
82 | }
83 | }
84 | > 细节注意:
85 | >
86 | >当前开源项目只实现了拖拽特效,拖拽完成退出应用之后并没有实现数据持久化功能,如需要进行数据的持久化,需要监听返回按钮在else方法实现数据持久化操作。
87 |
88 |
89 |
90 |
91 | ### 5. 复制如下代码到Adapter
92 |
93 | public class CheeseDynamicAdapter extends BaseDynamicGridAdapter {
94 | public CheeseDynamicAdapter(Context context, List> items, int columnCount) {
95 | super(context, items, columnCount);
96 | }
97 |
98 | @Override
99 | public View getView(int position, View convertView, ViewGroup parent) {
100 | CheeseViewHolder holder;
101 | if (convertView == null) {
102 | convertView = LayoutInflater.from(getContext()).inflate(R.layout.item_grid, null);
103 | holder = new CheeseViewHolder(convertView);
104 | convertView.setTag(holder);
105 | } else {
106 | holder = (CheeseViewHolder) convertView.getTag();
107 | }
108 | holder.build(getItem(position).toString());
109 | return convertView;
110 | }
111 |
112 | private class CheeseViewHolder {
113 | private TextView titleText;
114 | private ImageView image;
115 |
116 | private CheeseViewHolder(View view) {
117 | titleText = (TextView) view.findViewById(R.id.item_title);
118 | image = (ImageView) view.findViewById(R.id.item_img);
119 | }
120 |
121 | void build(String title) {
122 | titleText.setText(title);
123 | image.setImageResource(R.mipmap.ic_launcher);
124 | }
125 | }}
126 |
127 | > 细节注意:
128 | >
129 | > 必须继承BaseDynamicGridAdapter。
130 |
131 | * 详细的使用方法在DEMO里面都演示啦,如果你觉得这个库还不错,请赏我一颗star吧~~~
132 |
133 | * 欢迎关注微信公众号
134 |
135 | 
136 |
--------------------------------------------------------------------------------
/app/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/app/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.android.application'
2 |
3 | android {
4 | compileSdkVersion 25
5 | buildToolsVersion "25.0.0"
6 | defaultConfig {
7 | applicationId "com.itcast.mobilesafe.test"
8 | minSdkVersion 16
9 | targetSdkVersion 25
10 | versionCode 1
11 | versionName "1.0"
12 | testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
13 | }
14 | buildTypes {
15 | release {
16 | minifyEnabled false
17 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
18 | }
19 | }
20 | }
21 |
22 | dependencies {
23 | compile fileTree(include: ['*.jar'], dir: 'libs')
24 | androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
25 | exclude group: 'com.android.support', module: 'support-annotations'
26 | })
27 | compile 'com.android.support:appcompat-v7:25.0.1'
28 | testCompile 'junit:junit:4.12'
29 | compile project(':dynamicgrid')
30 | }
31 |
--------------------------------------------------------------------------------
/app/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # By default, the flags in this file are appended to flags specified
3 | # in i:\Users\mwqi\AppData\Local\Android\sdk/tools/proguard/proguard-android.txt
4 | # You can edit the include path and order by changing the proguardFiles
5 | # directive in build.gradle.
6 | #
7 | # For more details, see
8 | # http://developer.android.com/guide/developing/tools/proguard.html
9 |
10 | # Add any project specific keep options here:
11 |
12 | # If your project uses WebView with JS, uncomment the following
13 | # and specify the fully qualified class name to the JavaScript interface
14 | # class:
15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
16 | # public *;
17 | #}
18 |
--------------------------------------------------------------------------------
/app/src/androidTest/java/com/itcast/mobilesafe/test/ExampleInstrumentedTest.java:
--------------------------------------------------------------------------------
1 | package com.itcast.mobilesafe.test;
2 |
3 | import android.content.Context;
4 | import android.support.test.InstrumentationRegistry;
5 | import android.support.test.runner.AndroidJUnit4;
6 |
7 | import org.junit.Test;
8 | import org.junit.runner.RunWith;
9 |
10 | import static org.junit.Assert.*;
11 |
12 | /**
13 | * Instrumentation test, which will execute on an Android device.
14 | *
15 | * @see Testing documentation
16 | */
17 | @RunWith(AndroidJUnit4.class)
18 | public class ExampleInstrumentedTest {
19 | @Test
20 | public void useAppContext() throws Exception {
21 | // Context of the app under test.
22 | Context appContext = InstrumentationRegistry.getTargetContext();
23 |
24 | assertEquals("com.itcast.mobilesafe.test", appContext.getPackageName());
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/app/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/app/src/main/java/com/itcast/mobilesafe/test/CheeseDynamicAdapter.java:
--------------------------------------------------------------------------------
1 | package com.itcast.mobilesafe.test;
2 |
3 | /**
4 | * Author: alex askerov
5 | * Date: 9/9/13
6 | * Time: 10:52 PM
7 | */
8 |
9 | import android.content.Context;
10 | import android.view.LayoutInflater;
11 | import android.view.View;
12 | import android.view.ViewGroup;
13 | import android.widget.ImageView;
14 | import android.widget.TextView;
15 | import org.askerov.dynamicgrid.BaseDynamicGridAdapter;
16 |
17 | import java.util.List;
18 |
19 | /**
20 | * Author: alex askerov
21 | * Date: 9/7/13
22 | * Time: 10:56 PM
23 | */
24 | public class CheeseDynamicAdapter extends BaseDynamicGridAdapter {
25 | public CheeseDynamicAdapter(Context context, List> items, int columnCount) {
26 | super(context, items, columnCount);
27 | }
28 |
29 | @Override
30 | public View getView(int position, View convertView, ViewGroup parent) {
31 | CheeseViewHolder holder;
32 | if (convertView == null) {
33 | convertView = LayoutInflater.from(getContext()).inflate(R.layout.item_grid, null);
34 | holder = new CheeseViewHolder(convertView);
35 | convertView.setTag(holder);
36 | } else {
37 | holder = (CheeseViewHolder) convertView.getTag();
38 | }
39 | holder.build(getItem(position).toString());
40 | return convertView;
41 | }
42 |
43 | private class CheeseViewHolder {
44 | private TextView titleText;
45 | private ImageView image;
46 |
47 | private CheeseViewHolder(View view) {
48 | titleText = (TextView) view.findViewById(R.id.item_title);
49 | image = (ImageView) view.findViewById(R.id.item_img);
50 | }
51 |
52 | void build(String title) {
53 | titleText.setText(title);
54 | image.setImageResource(R.mipmap.ic_launcher);
55 | }
56 | }
57 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/itcast/mobilesafe/test/Cheeses.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2013 The Android Open Source Project
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.itcast.mobilesafe.test;
18 |
19 | public class Cheeses {
20 |
21 | public static final String[] sCheeseStrings = {
22 | "Abbaye de Belloc", "Abbaye du Mont des Cats", "Abertam", "Abondance", "Ackawi",
23 | "Acorn", "Adelost", "Affidelice au Chablis", "Afuega'l Pitu", "Airag", "Airedale",
24 | "Aisy Cendre", "Allgauer Emmentaler", "Alverca", "Ambert", "American Cheese",
25 | "Ami du Chambertin", "Anejo Enchilado", "Anneau du Vic-Bilh", "Anthoriro", "Appenzell",
26 | "Aragon", "Ardi Gasna", "Ardrahan", "Armenian String", "Aromes au Gene de Marc",
27 | "Asadero", "Asiago", "Aubisque Pyrenees", "Autun", "Avaxtskyr", "Baby Swiss",
28 | "Babybel", "Baguette Laonnaise", "Bakers", "Baladi", "Balaton", "Bandal", "Banon",
29 | "Barry's Bay Cheddar", "Basing", "Basket Cheese", "Bath Cheese", "Bavarian Bergkase",
30 | "Baylough", "Beaufort", "Beauvoorde", "Beenleigh Blue", "Beer Cheese", "Bel Paese",
31 | "Bergader", "Bergere Bleue", "Berkswell", "Beyaz Peynir", "Bierkase", "Bishop Kennedy",
32 | "Blarney", "Bleu d'Auvergne", "Bleu de Gex", "Bleu de Laqueuille",
33 | "Bleu de Septmoncel", "Bleu Des Causses", "Blue", "Blue Castello", "Blue Rathgore",
34 | "Blue Vein (Australian)", "Blue Vein Cheeses", "Bocconcini", "Bocconcini (Australian)",
35 | "Boeren Leidenkaas", "Bonchester", "Bosworth", "Bougon", "Boule Du Roves",
36 | "Boulette d'Avesnes", "Boursault", "Boursin", "Bouyssou", "Bra", "Braudostur",
37 | "Breakfast Cheese", "Brebis du Lavort", "Brebis du Lochois", "Brebis du Puyfaucon",
38 | "Bresse Bleu", "Brick", "Brie", "Brie de Meaux", "Brie de Melun", "Brillat-Savarin",
39 | "Brin", "Brin d' Amour", "Brin d'Amour", "Brinza (Burduf Brinza)",
40 | "Briquette de Brebis", "Briquette du Forez", "Broccio", "Broccio Demi-Affine",
41 | "Brousse du Rove", "Bruder Basil", "Brusselae Kaas (Fromage de Bruxelles)", "Bryndza",
42 | "Buchette d'Anjou", "Buffalo", "Burgos", "Butte", "Butterkase", "Button (Innes)",
43 | "Buxton Blue", "Cabecou", "Caboc", "Cabrales", "Cachaille", "Caciocavallo", "Caciotta",
44 | "Caerphilly", "Cairnsmore", "Calenzana", "Cambazola", "Camembert de Normandie",
45 | "Canadian Cheddar", "Canestrato", "Cantal", "Caprice des Dieux", "Capricorn Goat",
46 | "Capriole Banon", "Carre de l'Est", "Casciotta di Urbino", "Cashel Blue", "Castellano",
47 | "Castelleno", "Castelmagno", "Castelo Branco", "Castigliano", "Cathelain",
48 | "Celtic Promise", "Cendre d'Olivet", "Cerney", "Chabichou", "Chabichou du Poitou",
49 | "Chabis de Gatine", "Chaource", "Charolais", "Chaumes", "Cheddar",
50 | "Cheddar Clothbound", "Cheshire", "Chevres", "Chevrotin des Aravis", "Chontaleno",
51 | "Civray", "Coeur de Camembert au Calvados", "Coeur de Chevre", "Colby", "Cold Pack",
52 | "Comte", "Coolea", "Cooleney", "Coquetdale", "Corleggy", "Cornish Pepper",
53 | "Cotherstone", "Cotija", "Cottage Cheese", "Cottage Cheese (Australian)",
54 | "Cougar Gold", "Coulommiers", "Coverdale", "Crayeux de Roncq", "Cream Cheese",
55 | "Cream Havarti", "Crema Agria", "Crema Mexicana", "Creme Fraiche", "Crescenza",
56 | "Croghan", "Crottin de Chavignol", "Crottin du Chavignol", "Crowdie", "Crowley",
57 | "Cuajada", "Curd", "Cure Nantais", "Curworthy", "Cwmtawe Pecorino",
58 | "Cypress Grove Chevre", "Danablu (Danish Blue)", "Danbo", "Danish Fontina",
59 | "Daralagjazsky", "Dauphin", "Delice des Fiouves", "Denhany Dorset Drum", "Derby",
60 | "Dessertnyj Belyj", "Devon Blue", "Devon Garland", "Dolcelatte", "Doolin",
61 | "Doppelrhamstufel", "Dorset Blue Vinney", "Double Gloucester", "Double Worcester",
62 | "Dreux a la Feuille", "Dry Jack", "Duddleswell", "Dunbarra", "Dunlop", "Dunsyre Blue",
63 | "Duroblando", "Durrus", "Dutch Mimolette (Commissiekaas)", "Edam", "Edelpilz",
64 | "Emental Grand Cru", "Emlett", "Emmental", "Epoisses de Bourgogne", "Esbareich",
65 | "Esrom", "Etorki", "Evansdale Farmhouse Brie", "Evora De L'Alentejo", "Exmoor Blue",
66 | "Explorateur", "Feta", "Feta (Australian)", "Figue", "Filetta", "Fin-de-Siecle",
67 | "Finlandia Swiss", "Finn", "Fiore Sardo", "Fleur du Maquis", "Flor de Guia",
68 | "Flower Marie", "Folded", "Folded cheese with mint", "Fondant de Brebis",
69 | "Fontainebleau", "Fontal", "Fontina Val d'Aosta", "Formaggio di capra", "Fougerus",
70 | "Four Herb Gouda", "Fourme d' Ambert", "Fourme de Haute Loire", "Fourme de Montbrison",
71 | "Fresh Jack", "Fresh Mozzarella", "Fresh Ricotta", "Fresh Truffles", "Fribourgeois",
72 | "Friesekaas", "Friesian", "Friesla", "Frinault", "Fromage a Raclette", "Fromage Corse",
73 | "Fromage de Montagne de Savoie", "Fromage Frais", "Fruit Cream Cheese",
74 | "Frying Cheese", "Fynbo", "Gabriel", "Galette du Paludier", "Galette Lyonnaise",
75 | "Galloway Goat's Milk Gems", "Gammelost", "Gaperon a l'Ail", "Garrotxa", "Gastanberra",
76 | "Geitost", "Gippsland Blue", "Gjetost", "Gloucester", "Golden Cross", "Gorgonzola",
77 | "Gornyaltajski", "Gospel Green", "Gouda", "Goutu", "Gowrie", "Grabetto", "Graddost",
78 | "Grafton Village Cheddar", "Grana", "Grana Padano", "Grand Vatel",
79 | "Grataron d' Areches", "Gratte-Paille", "Graviera", "Greuilh", "Greve",
80 | "Gris de Lille", "Gruyere", "Gubbeen", "Guerbigny", "Halloumi",
81 | "Halloumy (Australian)", "Haloumi-Style Cheese", "Harbourne Blue", "Havarti",
82 | "Heidi Gruyere", "Hereford Hop", "Herrgardsost", "Herriot Farmhouse", "Herve",
83 | "Hipi Iti", "Hubbardston Blue Cow", "Hushallsost", "Iberico", "Idaho Goatster",
84 | "Idiazabal", "Il Boschetto al Tartufo", "Ile d'Yeu", "Isle of Mull", "Jarlsberg",
85 | "Jermi Tortes", "Jibneh Arabieh", "Jindi Brie", "Jubilee Blue", "Juustoleipa",
86 | "Kadchgall", "Kaseri", "Kashta", "Kefalotyri", "Kenafa", "Kernhem", "Kervella Affine",
87 | "Kikorangi", "King Island Cape Wickham Brie", "King River Gold", "Klosterkaese",
88 | "Knockalara", "Kugelkase", "L'Aveyronnais", "L'Ecir de l'Aubrac", "La Taupiniere",
89 | "La Vache Qui Rit", "Laguiole", "Lairobell", "Lajta", "Lanark Blue", "Lancashire",
90 | "Langres", "Lappi", "Laruns", "Lavistown", "Le Brin", "Le Fium Orbo", "Le Lacandou",
91 | "Le Roule", "Leafield", "Lebbene", "Leerdammer", "Leicester", "Leyden", "Limburger",
92 | "Lincolnshire Poacher", "Lingot Saint Bousquet d'Orb", "Liptauer", "Little Rydings",
93 | "Livarot", "Llanboidy", "Llanglofan Farmhouse", "Loch Arthur Farmhouse",
94 | "Loddiswell Avondale", "Longhorn", "Lou Palou", "Lou Pevre", "Lyonnais", "Maasdam",
95 | "Macconais", "Mahoe Aged Gouda", "Mahon", "Malvern", "Mamirolle", "Manchego",
96 | "Manouri", "Manur", "Marble Cheddar", "Marbled Cheeses", "Maredsous", "Margotin",
97 | "Maribo", "Maroilles", "Mascares", "Mascarpone", "Mascarpone (Australian)",
98 | "Mascarpone Torta", "Matocq", "Maytag Blue", "Meira", "Menallack Farmhouse",
99 | "Menonita", "Meredith Blue", "Mesost", "Metton (Cancoillotte)", "Meyer Vintage Gouda",
100 | "Mihalic Peynir", "Milleens", "Mimolette", "Mine-Gabhar", "Mini Baby Bells", "Mixte",
101 | "Molbo", "Monastery Cheeses", "Mondseer", "Mont D'or Lyonnais", "Montasio",
102 | "Monterey Jack", "Monterey Jack Dry", "Morbier", "Morbier Cru de Montagne",
103 | "Mothais a la Feuille", "Mozzarella", "Mozzarella (Australian)",
104 | "Mozzarella di Bufala", "Mozzarella Fresh, in water", "Mozzarella Rolls", "Munster",
105 | "Murol", "Mycella", "Myzithra", "Naboulsi", "Nantais", "Neufchatel",
106 | "Neufchatel (Australian)", "Niolo", "Nokkelost", "Northumberland", "Oaxaca",
107 | "Olde York", "Olivet au Foin", "Olivet Bleu", "Olivet Cendre",
108 | "Orkney Extra Mature Cheddar", "Orla", "Oschtjepka", "Ossau Fermier", "Ossau-Iraty",
109 | "Oszczypek", "Oxford Blue", "P'tit Berrichon", "Palet de Babligny", "Paneer", "Panela",
110 | "Pannerone", "Pant ys Gawn", "Parmesan (Parmigiano)", "Parmigiano Reggiano",
111 | "Pas de l'Escalette", "Passendale", "Pasteurized Processed", "Pate de Fromage",
112 | "Patefine Fort", "Pave d'Affinois", "Pave d'Auge", "Pave de Chirac", "Pave du Berry",
113 | "Pecorino", "Pecorino in Walnut Leaves", "Pecorino Romano", "Peekskill Pyramid",
114 | "Pelardon des Cevennes", "Pelardon des Corbieres", "Penamellera", "Penbryn",
115 | "Pencarreg", "Perail de Brebis", "Petit Morin", "Petit Pardou", "Petit-Suisse",
116 | "Picodon de Chevre", "Picos de Europa", "Piora", "Pithtviers au Foin",
117 | "Plateau de Herve", "Plymouth Cheese", "Podhalanski", "Poivre d'Ane", "Polkolbin",
118 | "Pont l'Eveque", "Port Nicholson", "Port-Salut", "Postel", "Pouligny-Saint-Pierre",
119 | "Pourly", "Prastost", "Pressato", "Prince-Jean", "Processed Cheddar", "Provolone",
120 | "Provolone (Australian)", "Pyengana Cheddar", "Pyramide", "Quark",
121 | "Quark (Australian)", "Quartirolo Lombardo", "Quatre-Vents", "Quercy Petit",
122 | "Queso Blanco", "Queso Blanco con Frutas --Pina y Mango", "Queso de Murcia",
123 | "Queso del Montsec", "Queso del Tietar", "Queso Fresco", "Queso Fresco (Adobera)",
124 | "Queso Iberico", "Queso Jalapeno", "Queso Majorero", "Queso Media Luna",
125 | "Queso Para Frier", "Queso Quesadilla", "Rabacal", "Raclette", "Ragusano", "Raschera",
126 | "Reblochon", "Red Leicester", "Regal de la Dombes", "Reggianito", "Remedou",
127 | "Requeson", "Richelieu", "Ricotta", "Ricotta (Australian)", "Ricotta Salata", "Ridder",
128 | "Rigotte", "Rocamadour", "Rollot", "Romano", "Romans Part Dieu", "Roncal", "Roquefort",
129 | "Roule", "Rouleau De Beaulieu", "Royalp Tilsit", "Rubens", "Rustinu", "Saaland Pfarr",
130 | "Saanenkaese", "Saga", "Sage Derby", "Sainte Maure", "Saint-Marcellin",
131 | "Saint-Nectaire", "Saint-Paulin", "Salers", "Samso", "San Simon", "Sancerre",
132 | "Sap Sago", "Sardo", "Sardo Egyptian", "Sbrinz", "Scamorza", "Schabzieger", "Schloss",
133 | "Selles sur Cher", "Selva", "Serat", "Seriously Strong Cheddar", "Serra da Estrela",
134 | "Sharpam", "Shelburne Cheddar", "Shropshire Blue", "Siraz", "Sirene", "Smoked Gouda",
135 | "Somerset Brie", "Sonoma Jack", "Sottocenare al Tartufo", "Soumaintrain",
136 | "Sourire Lozerien", "Spenwood", "Sraffordshire Organic", "St. Agur Blue Cheese",
137 | "Stilton", "Stinking Bishop", "String", "Sussex Slipcote", "Sveciaost", "Swaledale",
138 | "Sweet Style Swiss", "Swiss", "Syrian (Armenian String)", "Tala", "Taleggio", "Tamie",
139 | "Tasmania Highland Chevre Log", "Taupiniere", "Teifi", "Telemea", "Testouri",
140 | "Tete de Moine", "Tetilla", "Texas Goat Cheese", "Tibet", "Tillamook Cheddar",
141 | "Tilsit", "Timboon Brie", "Toma", "Tomme Brulee", "Tomme d'Abondance",
142 | "Tomme de Chevre", "Tomme de Romans", "Tomme de Savoie", "Tomme des Chouans", "Tommes",
143 | "Torta del Casar", "Toscanello", "Touree de L'Aubier", "Tourmalet",
144 | "Trappe (Veritable)", "Trois Cornes De Vendee", "Tronchon", "Trou du Cru", "Truffe",
145 | "Tupi", "Turunmaa", "Tymsboro", "Tyn Grug", "Tyning", "Ubriaco", "Ulloa",
146 | "Vacherin-Fribourgeois", "Valencay", "Vasterbottenost", "Venaco", "Vendomois",
147 | "Vieux Corse", "Vignotte", "Vulscombe", "Waimata Farmhouse Blue",
148 | "Washed Rind Cheese (Australian)", "Waterloo", "Weichkaese", "Wellington",
149 | "Wensleydale", "White Stilton", "Whitestone Farmhouse", "Wigmore", "Woodside Cabecou",
150 | "Xanadu", "Xynotyro", "Yarg Cornish", "Yarra Valley Pyramid", "Yorkshire Blue",
151 | "Zamorano"
152 | };
153 |
154 | }
155 |
--------------------------------------------------------------------------------
/app/src/main/java/com/itcast/mobilesafe/test/GridActivity.java:
--------------------------------------------------------------------------------
1 | package com.itcast.mobilesafe.test;
2 |
3 | import android.app.Activity;
4 | import android.os.Bundle;
5 | import android.util.Log;
6 | import android.view.View;
7 | import android.widget.AdapterView;
8 | import android.widget.Toast;
9 | import org.askerov.dynamicgrid.DynamicGridView;
10 |
11 | import java.util.ArrayList;
12 | import java.util.Arrays;
13 |
14 | public class GridActivity extends Activity {
15 |
16 | private static final String TAG = GridActivity.class.getName();
17 |
18 | private DynamicGridView gridView;
19 |
20 | @Override
21 | public void onCreate(Bundle savedInstanceState) {
22 | super.onCreate(savedInstanceState);
23 | setContentView(R.layout.activity_grid);
24 | gridView = (DynamicGridView) findViewById(R.id.dynamic_grid);
25 | gridView.setAdapter(new CheeseDynamicAdapter(this,
26 | new ArrayList(Arrays.asList(Cheeses.sCheeseStrings)),
27 | getResources().getInteger(R.integer.column_count)));
28 | // add callback to stop edit mode if needed
29 | // gridView.setOnDropListener(new DynamicGridView.OnDropListener()
30 | // {
31 | // @Override
32 | // public void onActionDrop()
33 | // {
34 | // gridView.stopEditMode();
35 | // }
36 | // });
37 | gridView.setOnDragListener(new DynamicGridView.OnDragListener() {
38 | @Override
39 | public void onDragStarted(int position) {
40 | Log.d(TAG, "drag started at position " + position);
41 | }
42 |
43 | @Override
44 | public void onDragPositionsChanged(int oldPosition, int newPosition) {
45 | Log.d(TAG, String.format("drag item position changed from %d to %d", oldPosition, newPosition));
46 | }
47 | });
48 | gridView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
49 | @Override
50 | public boolean onItemLongClick(AdapterView> parent, View view, int position, long id) {
51 | gridView.startEditMode(position);
52 | return true;
53 | }
54 | });
55 |
56 | gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
57 | @Override
58 | public void onItemClick(AdapterView> parent, View view, int position, long id) {
59 | Toast.makeText(GridActivity.this, parent.getAdapter().getItem(position).toString(),
60 | Toast.LENGTH_SHORT).show();
61 | }
62 | });
63 | }
64 |
65 | @Override
66 | public void onBackPressed() {
67 | if (gridView.isEditMode()) {
68 | gridView.stopEditMode();
69 | } else {
70 | super.onBackPressed();
71 | }
72 | }
73 | }
74 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_grid.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
8 |
14 |
15 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/item_grid.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
11 |
12 |
18 |
19 |
28 |
29 |
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/open-android/DynamicGridView/b9e25efda852cd8285b28cf1234142ae0928c01f/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/open-android/DynamicGridView/b9e25efda852cd8285b28cf1234142ae0928c01f/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/open-android/DynamicGridView/b9e25efda852cd8285b28cf1234142ae0928c01f/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/open-android/DynamicGridView/b9e25efda852cd8285b28cf1234142ae0928c01f/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/open-android/DynamicGridView/b9e25efda852cd8285b28cf1234142ae0928c01f/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/values-w820dp/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 | 64dp
6 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #3F51B5
4 | #303F9F
5 | #FF4081
6 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/values/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 16dp
4 | 16dp
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/values/integers.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 3
4 |
--------------------------------------------------------------------------------
/app/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | Test
3 |
4 |
--------------------------------------------------------------------------------
/app/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/app/src/test/java/com/itcast/mobilesafe/test/ExampleUnitTest.java:
--------------------------------------------------------------------------------
1 | package com.itcast.mobilesafe.test;
2 |
3 | import org.junit.Test;
4 |
5 | import static org.junit.Assert.*;
6 |
7 | /**
8 | * Example local unit test, which will execute on the development machine (host).
9 | *
10 | * @see Testing documentation
11 | */
12 | public class ExampleUnitTest {
13 | @Test
14 | public void addition_isCorrect() throws Exception {
15 | assertEquals(4, 2 + 2);
16 | }
17 | }
--------------------------------------------------------------------------------
/build.gradle:
--------------------------------------------------------------------------------
1 | // Top-level build file where you can add configuration options common to all sub-projects/modules.
2 |
3 | buildscript {
4 | repositories {
5 | jcenter()
6 | }
7 | dependencies {
8 | classpath 'com.android.tools.build:gradle:2.2.2'
9 | classpath 'com.github.dcendents:android-maven-gradle-plugin:1.5' // Add this line
10 | // NOTE: Do not place your application dependencies here; they belong
11 | // in the individual module build.gradle files
12 | }
13 | }
14 |
15 | allprojects {
16 | repositories {
17 | jcenter()
18 | }
19 | }
20 |
21 | task clean(type: Delete) {
22 | delete rootProject.buildDir
23 | }
24 |
--------------------------------------------------------------------------------
/dynamicgrid/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/dynamicgrid/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.android.library'
2 |
3 | android {
4 | compileSdkVersion 24
5 | buildToolsVersion "24.0.0"
6 |
7 | defaultConfig {
8 | minSdkVersion 8
9 | targetSdkVersion 24
10 | }
11 |
12 | sourceSets {
13 | main {
14 | manifest.srcFile 'AndroidManifest.xml'
15 | java.srcDirs = ['src']
16 | resources.srcDirs = ['src']
17 | aidl.srcDirs = ['src']
18 | renderscript.srcDirs = ['src']
19 | res.srcDirs = ['res']
20 | assets.srcDirs = ['assets']
21 | }
22 | }
23 | }
--------------------------------------------------------------------------------
/dynamicgrid/build/generated/source/buildConfig/androidTest/debug/org/askerov/dynamicgrid/test/BuildConfig.java:
--------------------------------------------------------------------------------
1 | /**
2 | * Automatically generated file. DO NOT MODIFY
3 | */
4 | package org.askerov.dynamicgrid.test;
5 |
6 | public final class BuildConfig {
7 | public static final boolean DEBUG = Boolean.parseBoolean("true");
8 | public static final String APPLICATION_ID = "org.askerov.dynamicgrid.test";
9 | public static final String BUILD_TYPE = "debug";
10 | public static final String FLAVOR = "";
11 | public static final int VERSION_CODE = -1;
12 | public static final String VERSION_NAME = "";
13 | }
14 |
--------------------------------------------------------------------------------
/dynamicgrid/build/generated/source/buildConfig/debug/org/askerov/dynamicgrid/BuildConfig.java:
--------------------------------------------------------------------------------
1 | /**
2 | * Automatically generated file. DO NOT MODIFY
3 | */
4 | package org.askerov.dynamicgrid;
5 |
6 | public final class BuildConfig {
7 | public static final boolean DEBUG = Boolean.parseBoolean("true");
8 | public static final String APPLICATION_ID = "org.askerov.dynamicgrid";
9 | public static final String BUILD_TYPE = "debug";
10 | public static final String FLAVOR = "";
11 | public static final int VERSION_CODE = 1;
12 | public static final String VERSION_NAME = "1.0";
13 | }
14 |
--------------------------------------------------------------------------------
/dynamicgrid/build/generated/source/r/androidTest/debug/org/askerov/dynamicgrid/R.java:
--------------------------------------------------------------------------------
1 | /* AUTO-GENERATED FILE. DO NOT MODIFY.
2 | *
3 | * This class was automatically generated by the
4 | * aapt tool from the resource data it found. It
5 | * should not be modified by hand.
6 | */
7 | package org.askerov.dynamicgrid;
8 |
9 | public final class R {
10 | public static final class dimen {
11 | public static final int dgv_overlap_if_switch_straight_line = 0x7f020000;
12 | }
13 | public static final class id {
14 | public static final int dgv_wobble_tag = 0x7f030000;
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/dynamicgrid/build/generated/source/r/androidTest/debug/org/askerov/dynamicgrid/test/R.java:
--------------------------------------------------------------------------------
1 | /* AUTO-GENERATED FILE. DO NOT MODIFY.
2 | *
3 | * This class was automatically generated by the
4 | * aapt tool from the resource data it found. It
5 | * should not be modified by hand.
6 | */
7 |
8 | package org.askerov.dynamicgrid.test;
9 |
10 | public final class R {
11 | public static final class attr {
12 | }
13 | public static final class dimen {
14 | public static final int dgv_overlap_if_switch_straight_line=0x7f020000;
15 | }
16 | public static final class id {
17 | public static final int dgv_wobble_tag=0x7f030000;
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/dynamicgrid/build/generated/source/r/debug/org/askerov/dynamicgrid/R.java:
--------------------------------------------------------------------------------
1 | /* AUTO-GENERATED FILE. DO NOT MODIFY.
2 | *
3 | * This class was automatically generated by the
4 | * aapt tool from the resource data it found. It
5 | * should not be modified by hand.
6 | */
7 |
8 | package org.askerov.dynamicgrid;
9 |
10 | public final class R {
11 | public static final class attr {
12 | }
13 | public static final class dimen {
14 | public static int dgv_overlap_if_switch_straight_line=0x7f020000;
15 | }
16 | public static final class id {
17 | public static int dgv_wobble_tag=0x7f030000;
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/dynamicgrid/build/intermediates/blame/res/androidTest/debug/multi/values.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "outputFile": "I:\\Users\\Administrator\\AndroidStudioProjects\\Test\\dynamicgrid\\build\\intermediates\\incremental\\mergeDebugAndroidTestResources\\merged.dir\\values\\values.xml",
4 | "map": [
5 | {
6 | "to": {
7 | "startLine": 2,
8 | "startColumn": 4,
9 | "startOffset": 55,
10 | "endColumn": 66,
11 | "endOffset": 117
12 | },
13 | "from": {
14 | "file": "I:\\Users\\Administrator\\AndroidStudioProjects\\Test\\dynamicgrid\\build\\intermediates\\bundles\\debug\\res\\values\\values.xml",
15 | "position": {
16 | "startLine": 2,
17 | "startColumn": 4,
18 | "startOffset": 55,
19 | "endColumn": 66,
20 | "endOffset": 117
21 | }
22 | }
23 | },
24 | {
25 | "to": {
26 | "startLine": 3,
27 | "startColumn": 4,
28 | "startOffset": 122,
29 | "endColumn": 43,
30 | "endOffset": 161
31 | },
32 | "from": {
33 | "file": "I:\\Users\\Administrator\\AndroidStudioProjects\\Test\\dynamicgrid\\build\\intermediates\\bundles\\debug\\res\\values\\values.xml",
34 | "position": {
35 | "startLine": 3,
36 | "startColumn": 4,
37 | "startOffset": 122,
38 | "endColumn": 43,
39 | "endOffset": 161
40 | }
41 | }
42 | }
43 | ]
44 | }
45 | ]
--------------------------------------------------------------------------------
/dynamicgrid/build/intermediates/bundles/debug/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/dynamicgrid/build/intermediates/bundles/debug/R.txt:
--------------------------------------------------------------------------------
1 | int dimen dgv_overlap_if_switch_straight_line 0x7f020000
2 | int id dgv_wobble_tag 0x7f030000
3 |
--------------------------------------------------------------------------------
/dynamicgrid/build/intermediates/bundles/debug/res/values/values.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 16dp
4 |
5 |
--------------------------------------------------------------------------------
/dynamicgrid/build/intermediates/incremental/compileDebugAidl/dependency.store:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/dynamicgrid/build/intermediates/incremental/compileDebugAndroidTestAidl/dependency.store:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/dynamicgrid/build/intermediates/incremental/mergeDebugAndroidTestResources/compile-file-map.properties:
--------------------------------------------------------------------------------
1 | #Fri Dec 16 17:17:45 CST 2016
2 |
--------------------------------------------------------------------------------
/dynamicgrid/build/intermediates/incremental/mergeDebugAndroidTestResources/merged.dir/values/values.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 16dp
4 |
5 |
--------------------------------------------------------------------------------
/dynamicgrid/build/intermediates/incremental/mergeDebugAndroidTestResources/merger.xml:
--------------------------------------------------------------------------------
1 |
2 | 16dp
--------------------------------------------------------------------------------
/dynamicgrid/build/intermediates/incremental/mergeDebugAssets/merger.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/dynamicgrid/build/intermediates/incremental/mergeDebugShaders/merger.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/dynamicgrid/build/intermediates/incremental/packageDebugResources/compile-file-map.properties:
--------------------------------------------------------------------------------
1 | #Fri Dec 16 17:17:43 CST 2016
2 |
--------------------------------------------------------------------------------
/dynamicgrid/build/intermediates/incremental/packageDebugResources/merged.dir/values/values.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 16dp
4 |
5 |
--------------------------------------------------------------------------------
/dynamicgrid/build/intermediates/incremental/packageDebugResources/merger.xml:
--------------------------------------------------------------------------------
1 |
2 | 16dp
--------------------------------------------------------------------------------
/dynamicgrid/build/intermediates/manifest/androidTest/debug/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
8 |
9 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/dynamicgrid/build/intermediates/manifests/aapt/debug/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/dynamicgrid/build/intermediates/res/merged/androidTest/debug/values/values.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 16dp
4 |
5 |
--------------------------------------------------------------------------------
/dynamicgrid/build/intermediates/res/resources-debug-androidTest.ap_:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/open-android/DynamicGridView/b9e25efda852cd8285b28cf1234142ae0928c01f/dynamicgrid/build/intermediates/res/resources-debug-androidTest.ap_
--------------------------------------------------------------------------------
/dynamicgrid/build/intermediates/symbols/androidTest/debug/R.txt:
--------------------------------------------------------------------------------
1 | int dimen dgv_overlap_if_switch_straight_line 0x7f020000
2 | int id dgv_wobble_tag 0x7f030000
3 |
--------------------------------------------------------------------------------
/dynamicgrid/build/outputs/aar/dynamicgrid-debug.aar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/open-android/DynamicGridView/b9e25efda852cd8285b28cf1234142ae0928c01f/dynamicgrid/build/outputs/aar/dynamicgrid-debug.aar
--------------------------------------------------------------------------------
/dynamicgrid/res/values/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 16dp
4 |
--------------------------------------------------------------------------------
/dynamicgrid/res/values/id.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/dynamicgrid/src/org/askerov/dynamicgrid/AbstractDynamicGridAdapter.java:
--------------------------------------------------------------------------------
1 | package org.askerov.dynamicgrid;
2 |
3 | import android.widget.BaseAdapter;
4 |
5 | import java.util.HashMap;
6 | import java.util.List;
7 |
8 | /**
9 | * Author: alex askerov
10 | * Date: 9/6/13
11 | * Time: 7:43 PM
12 | */
13 |
14 |
15 | /**
16 | * Abstract adapter for {@link org.askerov.dynamicgrid.DynamicGridView} with sable items id;
17 | */
18 |
19 | public abstract class AbstractDynamicGridAdapter extends BaseAdapter implements DynamicGridAdapterInterface {
20 | public static final int INVALID_ID = -1;
21 |
22 | private int nextStableId = 0;
23 |
24 | private HashMap