//主界面
package com.example.test;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.List;
import com.example.car.CAFCar;
import com.example.car.Car;
import com.example.open.CarOpenHelper;
import com.google.gson.Gson;
import android.app.Activity;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.os.Environment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
/**
* 定义主界面
* @author 浅议爱
* 先从sd卡中读取json文件
* 解析json文件
* 将解析的数据展示到界面上,并添加到数据库中
*
*/
public class MainActivity extends Activity {
//定义对象
private String pjson;
private List<Car> list_car;
private ListView mListView;
private SQLiteDatabase sd;
private CarOpenHelper mHelper;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//实例化帮助类
mHelper=new CarOpenHelper(getApplicationContext(), "car.db", null, 1);
sd=mHelper.getReadableDatabase();
//获取控件id
mListView=(ListView) findViewById(R.id.mylistview);
//或得sdka下的json文件
intodata();
//进行解析
jsonParser();
//添加适配器
mListView.setAdapter(adapter);
}
/**
* 解析文件
*
*/
private void jsonParser() {
// TODO Auto-generated method stub
Gson gson=new Gson();
CAFCar cafcar=gson.fromJson(pjson, CAFCar.class);
list_car=cafcar.getData().getItems();
//便利集合
for(Car c:list_car){
//将数据添加到集合中
sd.execSQL("insert into car(id,name,price,brand)values(null,?,?,?)", new Object[]{c.getName(),c.getPrice(),c.getBrand()});
}
}
/**
* 查找sd下的文件
*/
private void intodata() {
//或得sd的路径
File path=Environment.getExternalStorageDirectory();
//获取状态
String state=Environment.getExternalStorageState();
//挂在状态
if (state.equals(Environment.MEDIA_MOUNTED)) {
//或得要解析的文件
File file=new File(path, "cardata.json");
//使用流读取
try {
FileInputStream fis=new FileInputStream(file);
//得到文件的大小
int size=fis.available();
byte[] buffer=new byte[size];
//读取文件
fis.read(buffer);
pjson=new String(buffer);
fis.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
/**
* 加载适配器
*/
BaseAdapter adapter=new BaseAdapter() {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
Viewholder v;
if (convertView==null) {
v=new Viewholder();
convertView=LayoutInflater.from(getApplicationContext()).inflate(R.layout.list_item, null);
v.name=(TextView) convertView.findViewById(R.id.name);
v.price=(TextView) convertView.findViewById(R.id.price);
v.brand=(TextView) convertView.findViewById(R.id.brand);
v.image=(ImageView) convertView.findViewById(R.id.image);
convertView.setTag(v);
}else {
v=(Viewholder) convertView.getTag();
}
v.name.setText(list_car.get(position).getName());
v.brand.setText(list_car.get(position).getBrand());
v.price.setText(list_car.get(position).getPrice()+"");
v.image.setImageResource(R.drawable.ic_launcher);
return convertView;
}
class Viewholder{
TextView name,price,brand;
ImageView image;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return list_car.get(position);
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return list_car.size();
}
};
}