Android 如何将json从服务器插入sqlite

Android 如何将json从服务器插入sqlite,android,Android,我正在创建一个脱机工作的应用程序。我的应用程序在在线模式下运行良好,并从url获取json。如何使其脱机工作?如何将json从url插入SQLite?我希望首先从url获取所有数据,然后将其插入SQLite,然后使用数据库 这是我的完整代码: public class MainActivity extends Activity { CategoryListAdapter3 cla; static ArrayList<Long> Category_ID = new ArrayList&

我正在创建一个脱机工作的应用程序。我的应用程序在在线模式下运行良好,并从url获取json。如何使其脱机工作?如何将json从url插入SQLite?我希望首先从url获取所有数据,然后将其插入SQLite,然后使用数据库

这是我的完整代码:

public class MainActivity extends Activity {
CategoryListAdapter3 cla;
static ArrayList<Long> Category_ID = new ArrayList<Long>();
static ArrayList<String> Category_name = new ArrayList<String>();
static ArrayList<String> Category_image = new ArrayList<String>();
String URL, URL2;
String SelectMenuAPI;
String _response;
String status;
GridView gridview;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    gridview = (GridView) findViewById(R.id.gridview);
    cla = new CategoryListAdapter3(MainActivity.this);
    new TheTask().execute();

    gridview.setOnItemClickListener(new OnItemClickListener() {

        public void onItemClick(AdapterView<?> arg0, View arg1,
                int position, long arg3) {
            // TODO Auto-generated method stub
            Intent iMenuList = new Intent(MainActivity.this,
                    Subcategory.class);

            iMenuList.putExtra("Category_ID",  
                            Category_ID.get(position));
            iMenuList.putExtra("Category_name", 
                           Category_name.get(position));

            startActivity(iMenuList);

        }
    });

}

void clearData() {
    Category_ID.clear();
    Category_name.clear();
    Category_image.clear();

}

public class TheTask extends AsyncTask<Void, String, String> {

    @Override
    protected void onPreExecute() {
        super.onPreExecute();

    }

    @Override
    protected String doInBackground(Void... arg0) {

SelectMenuAPI = "http://www.syddddds.pk/beta7/_webservices 
                       /mobile_api.php?response=getmaincategories";

        clearData();
        URL = SelectMenuAPI;
        URL2 = URL.replace(" ", "%20");

        try {

            Log.i("url", "" + URL2);
            HttpClient client = new DefaultHttpClient();
            HttpGet request = new HttpGet(URL2);
            HttpResponse response = client.execute(request);
            HttpEntity resEntity = response.getEntity();
            _response = EntityUtils.toString(resEntity);

        } catch (Exception e) {
            e.printStackTrace();
        }
        return _response;
    }

    @Override
    protected void onPostExecute(String result) {
        super.onPostExecute(result);

        try {

            JSONObject json2 = new JSONObject(result);

            status = json2.getString("Status");
            if (status.equals("1")) {

                JSONArray school2 = json2.getJSONArray("data");

                //
                for (int i = 0; i < school2.length(); i++) {
JSONObject object =  school2.getJSONObject(i);

  Category_ID.add(Long.parseLong(object .getString("category_id")));

     Category_name.add(object.getString("name"));

  Category_image.add(object.getString("image_path"));

                }

            }

            else {



            }

        } catch (JSONException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        gridview.setAdapter(cla);
        cla.notifyDataSetChanged();

    }
}





   public class CategoryListAdapter3 extends BaseAdapter {

private Activity activity;


private AQuery androidAQuery;


public CategoryListAdapter3(Activity act) {
    this.activity = act;
//  imageLoader = new ImageLoader(act);
}

public int getCount() {
    // TODO Auto-generated method stub
    return MainActivity.Category_ID.size();
}

public Object getItem(int position) {
    // TODO Auto-generated method stub
    return position;
}

public long getItemId(int position) {
    // TODO Auto-generated method stub
    return position;
}

public View getView(int position, View convertView, ViewGroup parent) {
    // TODO Auto-generated method stub
    ViewHolder holder;
    androidAQuery = new AQuery(getcontext());
    if(convertView == null){
        LayoutInflater inflater = (LayoutInflater) activity
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        convertView = inflater.inflate(R.layout.viewitem2, null);
        holder = new ViewHolder();

        convertView.setTag(holder);
    }else{
        holder = (ViewHolder) convertView.getTag();
    }


    holder.txtText = (TextView) convertView.findViewById(R.id.title2);
    holder.imgThumb = (ImageView) convertView.findViewById(R.id.image2);

    holder.txtText.setText(MainActivity.Category_name.get(position));


   androidAQuery.id(holder.imgThumb).image(MainActivity.Category_image.get(position), 
    true, true);

    return convertView;
}
private Activity getcontext() {
    // TODO Auto-generated method stub
    return null;
}
static class ViewHolder {
    TextView txtText;
    ImageView imgThumb;
}

    }
公共类MainActivity扩展活动{
3-共轭亚基;
静态ArrayList Category_ID=新ArrayList();
静态ArrayList Category_name=新ArrayList();
静态ArrayList Category_image=新ArrayList();
字符串URL,URL2;
字符串SelectMenuAPI;
字符串响应;
字符串状态;
GridView;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
gridview=(gridview)findViewById(R.id.gridview);
cla=新的CategoryListAdapter3(MainActivity.this);
新建任务().execute();
setOnItemClickListener(新的OnItemClickListener(){
公共链接(AdapterView arg0、视图arg1、,
整数位置,长arg3){
//TODO自动生成的方法存根
Intent iMenuList=新Intent(MainActivity.this,
子类别(类别);
iMenuList.putExtra(“类别ID”,
类别_ID.get(位置));
iMenuList.putExtra(“类别名称”,
类别名称。获取(位置));
起始触觉(iMenuList);
}
});
}
void clearData(){
类别_ID.clear();
类别名称。清除();
Category_image.clear();
}
公共类任务扩展异步任务{
@凌驾
受保护的void onPreExecute(){
super.onPreExecute();
}
@凌驾
受保护的字符串doInBackground(无效…arg0){
选择菜单UAPI=”http://www.syddddds.pk/beta7/_webservices 
/mobile_api.php?response=getmaincategories”;
clearData();
URL=选择菜单UAPI;
URL2=URL.replace(“,“%20”);
试一试{
Log.i(“url”和“+URL2”);
HttpClient=new DefaultHttpClient();
HttpGet请求=新的HttpGet(URL2);
HttpResponse response=client.execute(请求);
HttpEntity当前性=response.getEntity();
_response=EntityUtils.toString(resEntity);
}捕获(例外e){
e、 printStackTrace();
}
返回响应;
}
@凌驾
受保护的void onPostExecute(字符串结果){
super.onPostExecute(结果);
试一试{
JSONObject json2=新的JSONObject(结果);
status=json2.getString(“status”);
如果(状态等于(“1”)){
JSONArray school2=json2.getJSONArray(“数据”);
//
for(int i=0;i<2.length();i++){
JSONObject object=school2.getJSONObject(i);
Category_ID.add(Long.parseLong(object.getString(“Category_ID”));
Category_name.add(object.getString(“name”));
Category_image.add(object.getString(“image_path”);
}
}
否则{
}
}捕获(JSONException e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
setAdapter(cla);
cla.notifyDataSetChanged();
}
}
公共类CategoryStatAdapter3扩展了BaseAdapter{
私人活动;
私用水渠;
公共类别StatAdapter3(活动法){
这个活动=行动;
//imageLoader=新的imageLoader(act);
}
public int getCount(){
//TODO自动生成的方法存根
返回MainActivity.Category_ID.size();
}
公共对象getItem(int位置){
//TODO自动生成的方法存根
返回位置;
}
公共长getItemId(int位置){
//TODO自动生成的方法存根
返回位置;
}
公共视图getView(int位置、视图转换视图、视图组父视图){
//TODO自动生成的方法存根
视窗座;
AndroidQuery=new AQuery(getcontext());
if(convertView==null){
LayoutFlater充气机=(LayoutFlater)活动
.getSystemService(上下文布局\充气机\服务);
convertView=充气机。充气(R.layout.viewitem2,空);
holder=新的ViewHolder();
convertView.setTag(支架);
}否则{
holder=(ViewHolder)convertView.getTag();
}
holder.txtText=(TextView)convertView.findViewById(R.id.title2);
holder.imgThumb=(ImageView)convertView.findViewById(R.id.image2);
holder.txtText.setText(MainActivity.Category_name.get(position));
AndroidQuery.id(holder.imgThumb).image(MainActivity.Category_image.get(position)),
真的,真的);
返回视图;
}
私有活动getcontext(){
//TODO自动生成的方法存根
返回null;
}
静态类视窗夹{
TextView-txtText;
ImageView imgThumb;
}
}

欢迎来到Stack Overflow!感谢您发布代码,但请在您的问题中添加更多描述:您遇到了什么问题,您期望的结果是什么,到目前为止?浏览将帮助我们更好地回答您的问题。谢谢!我想让我的应用程序在线工作我的代码在线工作如何从url获取json如果没有可用的internet,我的json会保存在数据库中,我的应用程序会脱机工作吗?为什么你不能保存json数据并在需要脱机查看时读取它?如何?我很困惑如何脱机我可以通过电子邮件向你发送我的代码吗?修改你说的内容PLZZZ既然你可以从你的url获取json,你可以使用getter setter方法转换json值并为sql数据库操作创建一个类,从getter setter获取值并存储在sqlite数据库中