如何读取sd下的json文件,并解析展示,添加到数据库中

来源:互联网 发布:战无不胜神兵进阶数据 编辑:程序博客网 时间:2024/06/05 14:52

//主界面

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();
}
};
}

0 0
原创粉丝点击