update store page
This commit is contained in:
parent
872062b3c5
commit
80693cff86
@ -2,8 +2,10 @@
|
|||||||
<project version="4">
|
<project version="4">
|
||||||
<component name="ProjectModuleManager">
|
<component name="ProjectModuleManager">
|
||||||
<modules>
|
<modules>
|
||||||
<module fileurl="file://$PROJECT_DIR$/BuyWhat.iml" filepath="$PROJECT_DIR$/BuyWhat.iml" />
|
<module fileurl="file://C:\Project\BuyWhatNative\BuyWhat.iml" filepath="C:\Project\BuyWhatNative\BuyWhat.iml" />
|
||||||
|
<module fileurl="file://$PROJECT_DIR$/BuyWhatNative.iml" filepath="$PROJECT_DIR$/BuyWhatNative.iml" />
|
||||||
<module fileurl="file://$PROJECT_DIR$/app/app.iml" filepath="$PROJECT_DIR$/app/app.iml" />
|
<module fileurl="file://$PROJECT_DIR$/app/app.iml" filepath="$PROJECT_DIR$/app/app.iml" />
|
||||||
|
<module fileurl="file://C:\Project\BuyWhatNative\app\app.iml" filepath="C:\Project\BuyWhatNative\app\app.iml" />
|
||||||
</modules>
|
</modules>
|
||||||
</component>
|
</component>
|
||||||
</project>
|
</project>
|
6
.idea/vcs.xml
Normal file
6
.idea/vcs.xml
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="VcsDirectoryMappings">
|
||||||
|
<mapping directory="" vcs="Git" />
|
||||||
|
</component>
|
||||||
|
</project>
|
@ -11,5 +11,6 @@ class MainActivity : AppCompatActivity() {
|
|||||||
setContentView(R.layout.activity_main)
|
setContentView(R.layout.activity_main)
|
||||||
|
|
||||||
startActivity(Intent(this@MainActivity, StoreList::class.java))
|
startActivity(Intent(this@MainActivity, StoreList::class.java))
|
||||||
|
finish()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,10 +1,19 @@
|
|||||||
package xyz.mtfos.buywhat
|
package xyz.mtfos.buywhat
|
||||||
|
|
||||||
|
import android.annotation.SuppressLint
|
||||||
import android.app.Activity
|
import android.app.Activity
|
||||||
|
import android.content.Context
|
||||||
|
import android.content.Intent
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.widget.ListView
|
import android.os.Handler
|
||||||
import android.widget.TextView
|
import android.os.Message
|
||||||
import xyz.mtfos.tools.bind
|
import android.view.View
|
||||||
|
import android.view.ViewGroup
|
||||||
|
import android.widget.*
|
||||||
|
import org.json.JSONArray
|
||||||
|
import org.json.JSONObject
|
||||||
|
import xyz.mtfos.tools.apiObject
|
||||||
|
import xyz.mtfos.tools.objectTool.bind
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by jay on 2017/7/5.
|
* Created by jay on 2017/7/5.
|
||||||
@ -12,10 +21,81 @@ import xyz.mtfos.tools.bind
|
|||||||
class StoreList : Activity() {
|
class StoreList : Activity() {
|
||||||
private val lv: ListView by bind(R.id.storelv)
|
private val lv: ListView by bind(R.id.storelv)
|
||||||
private val tvTitle: TextView by bind(R.id.tvTitle)
|
private val tvTitle: TextView by bind(R.id.tvTitle)
|
||||||
|
private val ivRefresh: ImageView by bind(R.id.ivRefresh)
|
||||||
|
private val api: apiObject = apiObject(this@StoreList)
|
||||||
|
private var storeList: ArrayList<JSONObject> = ArrayList()
|
||||||
|
private var adapter: lvAdapter? = null
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
setContentView(R.layout.activity_store_list)
|
setContentView(R.layout.activity_store_list)
|
||||||
|
|
||||||
|
adapter = lvAdapter(this@StoreList, 0)
|
||||||
|
|
||||||
|
lv.adapter = adapter
|
||||||
|
|
||||||
|
lv.setOnItemClickListener({parent, view, position, id ->
|
||||||
|
val data: JSONObject = storeList.get(position) as JSONObject
|
||||||
|
val sid: Int = data!!["id"] as Int
|
||||||
|
|
||||||
|
var intent = Intent(this@StoreList, null)
|
||||||
|
intent.putExtra("id", sid)
|
||||||
|
startActivity(intent)
|
||||||
|
})
|
||||||
|
|
||||||
|
ivRefresh.setOnClickListener { v ->
|
||||||
|
getList()
|
||||||
|
}
|
||||||
|
|
||||||
|
getList()
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
fun getList() {
|
||||||
|
api.getStore(object : apiObject.apicb {
|
||||||
|
override fun Callback(json: JSONObject?) {
|
||||||
|
if (json!!["status"] == 1) {
|
||||||
|
var jarr: JSONArray = json!!["record"] as JSONArray
|
||||||
|
if(jarr.length() > 0) {
|
||||||
|
storeList.clear()
|
||||||
|
for(i in 0..(jarr.length() - 1)) {
|
||||||
|
val tmp = jarr.getJSONObject(i)
|
||||||
|
storeList.add(tmp)
|
||||||
|
}
|
||||||
|
uiHandler.sendEmptyMessage(1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
@SuppressLint("HandlerLeak")
|
||||||
|
private val uiHandler = object : Handler() {
|
||||||
|
override fun handleMessage(msg: Message?) {
|
||||||
|
super.handleMessage(msg)
|
||||||
|
when (msg!!.what) {
|
||||||
|
1 -> {
|
||||||
|
// update listview data
|
||||||
|
adapter!!.clear()
|
||||||
|
adapter!!.addAll(storeList)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class lvAdapter(context: Context, resource: Int): ArrayAdapter<JSONObject>(context, resource) {
|
||||||
|
|
||||||
|
override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View {
|
||||||
|
val data = getItem(position) as JSONObject
|
||||||
|
var v: View = if(convertView == null) {
|
||||||
|
View.inflate(context, R.layout.listview_store_item, null)
|
||||||
|
}else {
|
||||||
|
convertView
|
||||||
|
}
|
||||||
|
val tv: TextView = v.findViewById(R.id.tvItem)
|
||||||
|
tv.text = data!!["name"] as String
|
||||||
|
return v
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@ -2,7 +2,9 @@ package xyz.mtfos.tools
|
|||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.util.Log
|
import android.util.Log
|
||||||
|
import okhttp3.*
|
||||||
import org.json.JSONObject
|
import org.json.JSONObject
|
||||||
|
import java.io.IOException
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by jay on 2017/7/5.
|
* Created by jay on 2017/7/5.
|
||||||
@ -11,6 +13,8 @@ import org.json.JSONObject
|
|||||||
open class apiObject constructor(val ctx: Context) {
|
open class apiObject constructor(val ctx: Context) {
|
||||||
private val tag: String = "API Object"
|
private val tag: String = "API Object"
|
||||||
|
|
||||||
|
private val client: OkHttpClient = OkHttpClient()
|
||||||
|
|
||||||
interface apicb {
|
interface apicb {
|
||||||
fun Callback(json: JSONObject?)
|
fun Callback(json: JSONObject?)
|
||||||
}
|
}
|
||||||
@ -19,12 +23,46 @@ open class apiObject constructor(val ctx: Context) {
|
|||||||
Log.d(tag, "API Object Initialized")
|
Log.d(tag, "API Object Initialized")
|
||||||
}
|
}
|
||||||
|
|
||||||
open fun getStore(){
|
open fun getStore(cb: apicb){
|
||||||
val url:String = "${projectSet.apiUrl}/store"
|
val url:String = "${projectSet.apiUrl}/store"
|
||||||
|
var req:Request = Request.Builder()
|
||||||
|
.url(url)
|
||||||
|
.build()
|
||||||
|
send(req, object : apicb {
|
||||||
|
override fun Callback(json: JSONObject?) {
|
||||||
|
cb.Callback(json)
|
||||||
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
fun send(cb: apicb) {
|
open fun getItems(storeId: Int, cb: apicb) {
|
||||||
|
val url:String = "${projectSet.apiUrl}/item/${storeId}"
|
||||||
|
var req:Request = Request.Builder()
|
||||||
|
.url(url)
|
||||||
|
.build()
|
||||||
|
send(req, object : apicb {
|
||||||
|
override fun Callback(json: JSONObject?) {
|
||||||
|
cb.Callback(json)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
fun send(req: Request, cb: apicb) {
|
||||||
|
client.newCall(req).enqueue(object: Callback{
|
||||||
|
override fun onFailure(call: Call?, e: IOException?) {
|
||||||
|
e?.printStackTrace()
|
||||||
|
val json : JSONObject = JSONObject()
|
||||||
|
json.put("status", 0)
|
||||||
|
json.put("message", "System Error")
|
||||||
|
cb.Callback(json)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onResponse(call: Call?, response: Response?) {
|
||||||
|
var str: String? = null
|
||||||
|
str = response?.body()!!.string()
|
||||||
|
val json : JSONObject = JSONObject(str)
|
||||||
|
cb.Callback(json)
|
||||||
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -7,14 +7,16 @@ import android.app.Activity
|
|||||||
import android.support.annotation.IdRes
|
import android.support.annotation.IdRes
|
||||||
import android.view.View
|
import android.view.View
|
||||||
|
|
||||||
fun <T : View> Activity.bind(@IdRes idRes: Int): Lazy<T> {
|
object objectTool {
|
||||||
@Suppress("UNCHECKED_CAST")
|
fun <T : View> Activity.bind(@IdRes idRes: Int): Lazy<T> {
|
||||||
return unsafeLazy { findViewById<T>(idRes) }
|
@Suppress("UNCHECKED_CAST")
|
||||||
}
|
return unsafeLazy { findViewById<T>(idRes) }
|
||||||
|
}
|
||||||
|
|
||||||
fun <T : View> View.bind(@IdRes idRes: Int): Lazy<T> {
|
fun <T : View> View.bind(@IdRes idRes: Int): Lazy<T> {
|
||||||
@Suppress("UNCHECKED_CAST")
|
@Suppress("UNCHECKED_CAST")
|
||||||
return unsafeLazy { findViewById<T>(idRes) }
|
return unsafeLazy { findViewById<T>(idRes) }
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun <T> unsafeLazy(initializer: () -> T) = lazy(LazyThreadSafetyMode.NONE, initializer)
|
private fun <T> unsafeLazy(initializer: () -> T) = lazy(LazyThreadSafetyMode.NONE, initializer)
|
||||||
|
}
|
BIN
app/src/main/res/drawable-hdpi/ic_refresh_black_24dp.png
Normal file
BIN
app/src/main/res/drawable-hdpi/ic_refresh_black_24dp.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 391 B |
BIN
app/src/main/res/drawable-mdpi/ic_refresh_black_24dp.png
Normal file
BIN
app/src/main/res/drawable-mdpi/ic_refresh_black_24dp.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 249 B |
BIN
app/src/main/res/drawable-xhdpi/ic_refresh_black_24dp.png
Normal file
BIN
app/src/main/res/drawable-xhdpi/ic_refresh_black_24dp.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 506 B |
BIN
app/src/main/res/drawable-xxhdpi/ic_refresh_black_24dp.png
Normal file
BIN
app/src/main/res/drawable-xxhdpi/ic_refresh_black_24dp.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 721 B |
BIN
app/src/main/res/drawable-xxxhdpi/ic_refresh_black_24dp.png
Normal file
BIN
app/src/main/res/drawable-xxxhdpi/ic_refresh_black_24dp.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 948 B |
@ -26,14 +26,22 @@
|
|||||||
android:id="@+id/tvTitle"
|
android:id="@+id/tvTitle"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:text="商店列表"
|
android:text="@string/store_title"
|
||||||
android:textSize="20dp" />
|
android:textSize="20dp" />
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:layout_width="30dp"
|
android:layout_width="30dp"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:orientation="vertical"></LinearLayout>
|
android:gravity="center"
|
||||||
|
android:orientation="vertical">
|
||||||
|
<ImageView
|
||||||
|
android:id="@+id/ivRefresh"
|
||||||
|
android:layout_width="25dp"
|
||||||
|
android:layout_height="25dp"
|
||||||
|
android:scaleType="fitCenter"
|
||||||
|
android:src="@drawable/ic_refresh_black_24dp"/>
|
||||||
|
</LinearLayout>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
|
14
app/src/main/res/layout/listview_store_item.xml
Normal file
14
app/src/main/res/layout/listview_store_item.xml
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:orientation="vertical" android:layout_width="match_parent"
|
||||||
|
android:layout_height="30dp">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/tvItem"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="center"
|
||||||
|
android:textSize="20dp"
|
||||||
|
android:text="Simple"/>
|
||||||
|
|
||||||
|
</LinearLayout>
|
@ -1,3 +1,4 @@
|
|||||||
<resources>
|
<resources>
|
||||||
<string name="app_name">BuyWhat</string>
|
<string name="app_name">BuyWhat</string>
|
||||||
|
<string name="store_title">商店列表</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
Loading…
Reference in New Issue
Block a user