diff --git a/ParseUI-Widget-Sample/build.gradle b/ParseUI-Widget-Sample/build.gradle new file mode 100644 index 0000000..883e312 --- /dev/null +++ b/ParseUI-Widget-Sample/build.gradle @@ -0,0 +1,27 @@ +apply plugin: 'com.android.application' + +android { + compileSdkVersion rootProject.ext.compileSdkVersion + buildToolsVersion rootProject.ext.buildToolsVersion + + defaultConfig { + minSdkVersion rootProject.ext.minSdkVersion + targetSdkVersion rootProject.ext.targetSdkVersion + applicationId "com.parse.ui.widget.sample" + versionCode 1 + versionName "1.0" + } + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + } + } +} + +dependencies { + compile 'com.android.support:appcompat-v7:23.1.1' + compile project(':ParseUI-Widget') + + testCompile 'junit:junit:4.12' +} diff --git a/ParseUI-Widget-Sample/proguard-rules.pro b/ParseUI-Widget-Sample/proguard-rules.pro new file mode 100644 index 0000000..a965f92 --- /dev/null +++ b/ParseUI-Widget-Sample/proguard-rules.pro @@ -0,0 +1,17 @@ +# Add project specific ProGuard rules here. +# By default, the flags in this file are appended to flags specified +# in /usr/local/opt/android-sdk/tools/proguard/proguard-android.txt +# You can edit the include path and order by changing the proguardFiles +# directive in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# Add any project specific keep options here: + +# 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 *; +#} diff --git a/ParseUI-Widget-Sample/src/main/AndroidManifest.xml b/ParseUI-Widget-Sample/src/main/AndroidManifest.xml new file mode 100644 index 0000000..37ac933 --- /dev/null +++ b/ParseUI-Widget-Sample/src/main/AndroidManifest.xml @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/ParseUI-Widget-Sample/src/main/java/com/parse/ui/widget/sample/ListActivity.java b/ParseUI-Widget-Sample/src/main/java/com/parse/ui/widget/sample/ListActivity.java new file mode 100644 index 0000000..cf004bc --- /dev/null +++ b/ParseUI-Widget-Sample/src/main/java/com/parse/ui/widget/sample/ListActivity.java @@ -0,0 +1,53 @@ +package com.parse.ui.widget.sample; + +import android.os.Bundle; +import android.support.annotation.Nullable; +import android.support.v7.app.AppCompatActivity; +import android.widget.ListView; +import android.widget.Toast; + +import com.parse.ParseException; +import com.parse.ParseObject; +import com.parse.ParseQuery; +import com.parse.ParseQueryAdapter; + +import java.util.List; + + +public class ListActivity extends AppCompatActivity { + + @Override + protected void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_list); + + ListView listView = (ListView) findViewById(R.id.list); + + ParseQueryAdapter adapter = new ParseQueryAdapter<>(this, + new ParseQueryAdapter.QueryFactory() { + @Override + public ParseQuery create() { + return ParseQuery.getQuery("Contact") + .orderByAscending("name") + .setCachePolicy(ParseQuery.CachePolicy.CACHE_THEN_NETWORK); + } + }, android.R.layout.simple_list_item_1); + adapter.setTextKey("name"); + adapter.addOnQueryLoadListener(new ParseQueryAdapter.OnQueryLoadListener() { + @Override + public void onLoading() { + + } + + @Override + public void onLoaded(List objects, Exception e) { + if (e != null + && e instanceof ParseException + && ((ParseException) e).getCode() != ParseException.CACHE_MISS) { + Toast.makeText(ListActivity.this, "Error: " + e.getMessage(), Toast.LENGTH_LONG).show(); + } + } + }); + listView.setAdapter(adapter); + } +} diff --git a/ParseUI-Widget-Sample/src/main/java/com/parse/ui/widget/sample/MainActivity.java b/ParseUI-Widget-Sample/src/main/java/com/parse/ui/widget/sample/MainActivity.java new file mode 100644 index 0000000..be09b6e --- /dev/null +++ b/ParseUI-Widget-Sample/src/main/java/com/parse/ui/widget/sample/MainActivity.java @@ -0,0 +1,33 @@ +package com.parse.ui.widget.sample; + +import android.content.Intent; +import android.support.v7.app.AppCompatActivity; +import android.os.Bundle; +import android.view.View; + +public class MainActivity extends AppCompatActivity implements View.OnClickListener { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_main); + + findViewById(R.id.sample_list).setOnClickListener(this); + } + + //region OnClickListener + + @Override + public void onClick(View v) { + int id = v.getId(); + switch (id) { + case R.id.sample_list: { + Intent intent = new Intent(this, ListActivity.class); + startActivity(intent); + break; + } + } + } + + //endregion +} diff --git a/ParseUI-Widget-Sample/src/main/java/com/parse/ui/widget/sample/MyApplication.java b/ParseUI-Widget-Sample/src/main/java/com/parse/ui/widget/sample/MyApplication.java new file mode 100644 index 0000000..315c5b2 --- /dev/null +++ b/ParseUI-Widget-Sample/src/main/java/com/parse/ui/widget/sample/MyApplication.java @@ -0,0 +1,15 @@ +package com.parse.ui.widget.sample; + +import android.app.Application; + +import com.parse.Parse; + +public class MyApplication extends Application { + + @Override + public void onCreate() { + super.onCreate(); + + Parse.initialize(this); + } +} diff --git a/ParseUI-Widget-Sample/src/main/res/layout/activity_list.xml b/ParseUI-Widget-Sample/src/main/res/layout/activity_list.xml new file mode 100644 index 0000000..a570070 --- /dev/null +++ b/ParseUI-Widget-Sample/src/main/res/layout/activity_list.xml @@ -0,0 +1,10 @@ + + + + + \ No newline at end of file diff --git a/ParseUI-Widget-Sample/src/main/res/layout/activity_main.xml b/ParseUI-Widget-Sample/src/main/res/layout/activity_main.xml new file mode 100644 index 0000000..87dc282 --- /dev/null +++ b/ParseUI-Widget-Sample/src/main/res/layout/activity_main.xml @@ -0,0 +1,19 @@ + + + +