package com.baway.renjue.activity
;
import android.os.AsyncTask
;
import android.os.Environment
;
import android.support.v7.app.AppCompatActivity
;
import android.os.Bundle
;
import android.util.Log
;
import android.view.View
;
import android.widget.ListView
;
import android.widget.TextView
;
import com.baway.renjue.R
;
import com.baway.renjue.adapter.HouseAdapter
;
import com.baway.renjue.bean.HouseBean
;
import com.baway.renjue.utils.StreamUtils
;
import com.google.gson.Gson
;
import java.io.File
;
import java.io.FileInputStream
;
import java.io.FileNotFoundException
;
import java.io.IOException
;
import java.io.
InputStream;
import java.io.PrintWriter
;
import java.text.Collator
;
import java.util.ArrayList
;
import java.util.Collections
;
import java.util.Comparator
;
import java.util.List
;
import cz.msebera.android.httpclient.HttpResponse
;
import cz.msebera.android.httpclient.client.HttpClient
;
import cz.msebera.android.httpclient.client.methods.HttpGet
;
import cz.msebera.android.httpclient.impl.client.DefaultHttpClient
;
public class MainActivity
extends AppCompatActivity
implements View.OnClickListener {
private ListView
listView;
private TextView
tv_uptolow;
private TextView
tv_lowtoup;
private String
jsonUrl=
"http://api.fang.anjuke.com/m/android/1.3/shouye/recInfosV3/?city_id=14&lat=40.04652&lng=116.306033&api_key=androidkey&sig=9317e9634b5fbc16078ab07abb6661c5&macid=45cd2478331b184ff0e15f29aaa89e3e&app=a-ajk&_pid=11738&o=PE-TL10-user+4.4.2+HuaweiPE-TL10+CHNC00B260+ota-rel-keys,release-keys&from=mobile&m=Android-PE-TL10&cv=9.5.1&cid=14&i=864601026706713&v=4.4.2&pm=b61&uuid=1848c59c-185d-48d9-b0e9-782016041109&_chat_id=0&qtime=20160411091603";
private List<HouseBean.Result.Rows>
rows;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState)
;
setContentView(R.layout.
activity_main)
;
//找控件
initView()
;
//查找文件是否存在
String path = Environment.
getExternalStorageDirectory() +
"/cachehouse.json";
File file=
new File(path)
;
if (!file.exists()){
//不存在则获取网络数据
getServerData()
;
}
else{
//存在则直接解析
try {
InputStream read=
new FileInputStream(file)
;
String json = StreamUtils.
streamToString(read)
;
parseJson(json)
;
}
catch (FileNotFoundException e) {
e.printStackTrace()
;
}
}
}
private void getServerData() {
MyAsyncTask task=
new MyAsyncTask()
;
task.execute(
jsonUrl)
;
}
private void initView() {
listView = (ListView) findViewById(R.id.
listView)
;
tv_lowtoup = (TextView) findViewById(R.id.
tv_lowtoup)
;
tv_uptolow = (TextView) findViewById(R.id.
tv_uptolow)
;
}
/**
* 异步任务类
*/
public class MyAsyncTask
extends AsyncTask<String
,Integer
,String>{
@Override
protected void onPreExecute() {
super.onPreExecute()
;
}
//网络请求耗时操作
@Override
protected String
doInBackground(String... params) {
String url=params[
0]
;
HttpClient client=
new DefaultHttpClient()
;
HttpGet request=
new HttpGet(url)
;
try {
HttpResponse response = client.execute(request)
;
if (response.getStatusLine().getStatusCode()==
200){
InputStream inputStream = response.getEntity().getContent()
;
String result = StreamUtils.
streamToString(inputStream)
;
return result
;
}
}
catch (IOException e) {
e.printStackTrace()
;
}
return null;
}
@Override
protected void onProgressUpdate(Integer... values) {
super.onProgressUpdate(values)
;
}
//更新UI
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s)
;
String json=s.toString()
;
//将网络请求到的json存入指定文件
PrintWriter pw=
null;
try {
File file=
new File(Environment.
getExternalStorageDirectory()+
"/cache/")
;
if (!file.exists()){
file.mkdirs()
;
}
pw =
new PrintWriter(file.getPath()+
"house.json")
;
}
catch (FileNotFoundException e) {
e.printStackTrace()
;
}
pw.write(json)
;
pw.close()
;
//解析json
parseJson(json)
;
}
}
private void parseJson(String json) {
Gson gson=
new Gson()
;
HouseBean houseBean = gson.fromJson(json
, HouseBean.
class)
;
rows = houseBean.
result.
rows;
listView.setAdapter(
new HouseAdapter(MainActivity.
this, rows))
;
//textView监听
tv_lowtoup.setOnClickListener(
this)
;
tv_uptolow.setOnClickListener(
this)
;
}
@Override
public void onClick(View v) {
switch (v.getId()){
//从小到大排序
case R.id.
tv_lowtoup:
List<HouseBean.Result.Rows> list1=
new ArrayList<>()
;
List<HouseBean.Result.Rows> list2=
new ArrayList<>()
;
List<HouseBean.Result.Rows> list3=
new ArrayList<>()
;
for (
int i =
0; i <
rows.size()
; i++) {
if (
rows.get(i).
info.
new_price_back.equals(
"万元/套起")){
list1.add(
rows.get(i))
;
}
else{
list2.add(
rows.get(i))
;
}
}
//排序
Collections.
sort(list2
, new Comparator<HouseBean.Result.Rows>() {
@Override
public int compare(HouseBean.Result.Rows o1
, HouseBean.Result.Rows o2) {
HouseBean.Result.Rows o11 = o1
;
HouseBean.Result.Rows o21 = o2
;
return new Double(o1.
info.
new_price_value).compareTo(
new Double(o2.
info.
new_price_value))
;
}
})
;
list3.addAll(list2)
;
list3.addAll(list1)
;
listView.setAdapter(
new HouseAdapter(MainActivity.
this, list3))
;
break;
case R.id.
tv_uptolow:
List<HouseBean.Result.Rows> list4=
new ArrayList<>()
;
List<HouseBean.Result.Rows> list5=
new ArrayList<>()
;
List<HouseBean.Result.Rows> list6=
new ArrayList<>()
;
for (
int i =
0; i <
rows.size()
; i++) {
if (
rows.get(i).
info.
new_price_back.equals(
"万元/套起")){
list4.add(
rows.get(i))
;
}
else{
list5.add(
rows.get(i))
;
}
}
//排序
Collections.
sort(list5
, new Comparator<HouseBean.Result.Rows>() {
@Override
public int compare(HouseBean.Result.Rows o1
, HouseBean.Result.Rows o2) {
HouseBean.Result.Rows o11 = o1
;
HouseBean.Result.Rows o21 = o2
;
return new Double(o2.
info.
new_price_value).compareTo(
new Double(o1.
info.
new_price_value))
;
}
})
;
list6.addAll(list4)
;
list6.addAll(list5)
;
listView.setAdapter(
new HouseAdapter(MainActivity.
this, list6))
;
break;
}
}
}
package com.baway.renjue.adapter
;
import android.content.Context
;
import android.view.View
;
import android.view.ViewGroup
;
import android.widget.BaseAdapter
;
import android.widget.ImageView
;
import android.widget.TextView
;
import com.baway.renjue.R
;
import com.baway.renjue.bean.HouseBean
;
import com.baway.renjue.utils.ImageLoaderOptionsUtils
;
import com.nostra13.universalimageloader.core.ImageLoader
;
import java.util.List
;
public class HouseAdapter
extends BaseAdapter{
private Context
context;
private List<HouseBean.Result.Rows>
rows;
public HouseAdapter(Context context
, List<HouseBean.Result.Rows> rows) {
this.
context = context
;
this.
rows = rows
;
}
@Override
public int getCount() {
return rows.size()
;
}
@Override
public Object
getItem(
int position) {
return rows.get(position)
;
}
@Override
public long getItemId(
int position) {
return position
;
}
@Override
public View
getView(
int position
, View convertView
, ViewGroup parent) {
ViewHolder v
;
if (convertView==
null){
convertView=View.
inflate(
context, R.layout.
lv_item,null)
;
v=
new ViewHolder()
;
v.
iv_default= (ImageView) convertView.findViewById(R.id.
iv_default)
;
v.
tv_name= (TextView) convertView.findViewById(R.id.
tv_name)
;
v.
tv_region= (TextView) convertView.findViewById(R.id.
tv_region)
;
v.
tv_price= (TextView) convertView.findViewById(R.id.
tv_price)
;
v.
tv_tag1= (TextView) convertView.findViewById(R.id.
tv_tag1)
;
v.
tv_tag2= (TextView) convertView.findViewById(R.id.
tv_tag2)
;
v.
tv_tag3= (TextView) convertView.findViewById(R.id.
tv_tag3)
;
v.
tv_sale= (TextView) convertView.findViewById(R.id.
tv_sale)
;
convertView.setTag(v)
;
}
else{
v= (ViewHolder) convertView.getTag()
;
}
ImageLoader.
getInstance().displayImage(
rows.get(position).
info.
default_image,v.
iv_default, ImageLoaderOptionsUtils.
imageLoaderOptions(R.mipmap.
ic_launcher))
;
v.
tv_name.setText(
rows.get(position).
info.
loupan_name)
;
v.
tv_region.setText(
rows.get(position).
info.
region_title+
"-"+
rows.get(position).
info.
sub_region_title)
;
v.
tv_price.setText(
rows.get(position).
info.
new_price_value+
rows.get(position).
info.
new_price_back)
;
String tags =
rows.get(position).
info.
tags;
String[] split = tags.split(
",")
;
if (split.
length>=
3){
v.
tv_tag1.setText(split[
0])
;
v.
tv_tag2.setText(split[
1])
;
v.
tv_tag3.setText(split[
2])
;
}
else{
v.
tv_tag1.setText(split[
0])
;
}
v.
tv_sale.setText(
rows.get(position).
info.
sale_title)
;
return convertView
;
}
class ViewHolder{
ImageView
iv_default;
TextView
tv_name,tv_region,tv_price,tv_tag1,tv_tag2,tv_tag3,tv_sale;
}
}
package com.baway.renjue.bean
;
import java.util.List
;
public class HouseBean {
public Result
result;
@Override
public String
toString() {
return "HouseBean{" +
"result=" +
result +
'}';
}
public class Result{
public List<Rows>
rows;
@Override
public String
toString() {
return "Result{" +
"rows=" +
rows +
'}';
}
public class Rows{
public Info
info;
@Override
public String
toString() {
return "Rows{" +
"info=" +
info +
'}';
}
public class Info{
public String
default_image;
public String
loupan_name;
public String
new_price_back;
public String
new_price_value;
public String
region_title;
public String
sale_title;
public String
sub_region_title;
public String
tags;
@Override
public String
toString() {
return "Info{" +
"default_image='" +
default_image +
'\'' +
", loupan_name='" +
loupan_name +
'\'' +
", new_price_back='" +
new_price_back +
'\'' +
", new_price_value='" +
new_price_value +
'\'' +
", region_title='" +
region_title +
'\'' +
", sale_title='" +
sale_title +
'\'' +
", sub_region_title='" +
sub_region_title +
'\'' +
", tags='" +
tags +
'\'' +
'}';
}
}
}
}
}