SD卡存储

//适配器

package alice.bw.com.app2;



import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;


import com.squareup.picasso.Picasso;


import java.util.List;


/**
 * Created by jj on 2017/11/16.
 */


public class FoodAdapter extends BaseAdapter{
    private List<FoodEntity.DataBean> list;
    private Context context;
    private LayoutInflater inflater;


    public FoodAdapter(List list, Context context) {
        this.list = list;
        this.context = context;
        inflater=LayoutInflater.from(context);
    }


    @Override
    public int getCount() {
        return list.size();
    }


    @Override
    public Object getItem(int position) {
        return list.get(position);
    }


    @Override
    public long getItemId(int position) {
        return position;
    }


    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder holder=null;
        if (convertView==null){
            holder=new ViewHolder();
            //
            convertView=inflater.inflate(R.layout.item_layout,parent,false);
            holder.show_iv= (ImageView) convertView.findViewById(R.id.show_iv);
            holder.subject_tv= (TextView) convertView.findViewById(R.id.subject_tv);
            holder.summary_tv= (TextView) convertView.findViewById(R.id.summary_tv);
            convertView.setTag(holder);
        }else {
            holder= (ViewHolder) convertView.getTag();
        }
        FoodEntity.DataBean dataBean=list.get(position);
        holder.summary_tv.setText(dataBean.getFood_str());
        holder.subject_tv.setText(dataBean.getTitle());


        Picasso.with(context).with(context).load(dataBean.getPic()).into(holder.show_iv);


        return convertView;
    }


    static class ViewHolder{
        TextView subject_tv;
        TextView summary_tv;
        ImageView show_iv;
    }

}


//MainActivity 

package alice.bw.com.app2;


import android.content.Intent;
import android.graphics.Bitmap;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ImageView;
import android.widget.ListView;


import com.google.gson.Gson;


import java.util.ArrayList;
import java.util.List;


import alice.bw.com.app2.db.MySQLiteDateBase;


public class MainActivity extends AppCompatActivity {
    //网址
    private String path="http://www.qubaobei.com/ios/cf/dish_list.php?stage_id=1&limit=20&page=";
    private List<FoodEntity.DataBean> list=new ArrayList<>();
    private ListView listview;
    //创建一个适配器
    private FoodAdapter foodAdapter;
    private int pager = 1;
    private ImageView img;
    private MySQLiteDateBase db;




    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        img = (ImageView) findViewById(R.id.show_img);
        db = MySQLiteDateBase.getInstance(this);
        img.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {


                new Thread(){
                    @Override
                    public void run() {
                        super.run();
                        final Bitmap bm = HttpUtils.getBitmap("http://www.qubaobei.com/ios/cf/uploadfile/132/9/8289.jpg");
                        runOnUiThread(new Runnable() {
                            @Override
                            public void run() {
                                SDcardUtil.saveBitmapToSD("http://www.qubaobei.com/ios/cf/uploadfile/132/9/8289.jpg",bm,MainActivity.this);
                                img.setImageBitmap(SDcardUtil.getBitmapFromSD("http://www.qubaobei.com/ios/cf/uploadfile/132/9/8289.jpg",MainActivity.this));


                            }
                        });




                    }
                }.start();
            }
        });




        listview=(ListView) findViewById(R.id.listview);


        //调用适配器
        foodAdapter=new FoodAdapter(list,this);
        //运行适配器
        listview.setAdapter(foodAdapter);


        getDate();
        //点击修改
        listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                db.updateData(new FoodEntity.DataBean("猪肝","http://img3.redocn.com/tupian/20150121/bawangzhugan_3623998.jpg","猪肝"),list.get(i).getTitle());
                ArrayList<FoodEntity.DataBean> dataBeens = db.queryData();
                MainActivity.this.list.clear();
                //添加实体类 里面所有的Data类
                MainActivity.this.list.addAll(dataBeens);
                //更新数据
                foodAdapter.notifyDataSetChanged();
            }
        });




        //长按删除
        listview.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
            @Override
            public boolean onItemLongClick(AdapterView<?> adapterView, View view, int i, long l) {
                db.deletData(list.get(i).getTitle());
                ArrayList<FoodEntity.DataBean> dataBeens = db.queryData();
                MainActivity.this.list.clear();
                //添加实体类 里面所有的Data类
                MainActivity.this.list.addAll(dataBeens);
                //更新数据
                foodAdapter.notifyDataSetChanged();
                return true;
            }
        });
    }
    //定义一个方法来表示专门的 数据处理
    private  void getDate(){
        //todo 从数据库中查询数据     如果查询到的是空  就从网络上获取数据
        //todo  如果查询的不为空就直接添加到集合中
        ArrayList<FoodEntity.DataBean> list = db.queryData();
        if(list.size()!=0){
            //添加实体类 里面所有的Data类
            MainActivity.this.list.addAll(list);
            //更新数据
            foodAdapter.notifyDataSetChanged();
            return;
        }




        //异步任务
        new AsyncTask<Void,Void,String>(){


            @Override
            protected void onPreExecute() {
                super.onPreExecute();
                Intent intent = new Intent("alice.bw.com.app2");
                sendBroadcast(intent);
            }


            @Override
            protected String doInBackground(Void... params) {
                //调用HTTP解析从网上下载的字符串
                return HttpUtils.getJsonFromNet(path+pager);
            }
            //s是DoInBackground返回的值
            @Override
            protected void onPostExecute(String s) {
                super.onPostExecute(s);
                if (!s.isEmpty()){
                    //完成刷新 如果缺少完成刷新就会一直刷新
//                    listview.onRefreshComplete();
                    Gson gson=new Gson();
                    FoodEntity foodEntity=gson.fromJson(s,FoodEntity.class);
                    // 将数据保存到数据库中   db.addDataS(list);
                    db.addDatas(foodEntity.getData());
                    //添加实体类 里面所有的Data类
                    MainActivity.this.list.addAll(foodEntity.getData());
                    //更新数据
                    foodAdapter.notifyDataSetChanged();


                }
            }
        }.execute();


    }
}


//广播接收

package alice.bw.com.app2;


import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;


/**
 * @author alice
 * @version 1.0
 * @Date 2017/12/9 10:17
 */
public class MyBroadCast extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        Toast.makeText(context, "正在网络上下载数据", Toast.LENGTH_SHORT).show();
    }
}


package alice.bw.com.app2.db;


import java.io.Serializable;


public class MySQLiteColumn implements Serializable{
public static final String TABLE_NAME="data";

public static final String _ID = "_id";
public static final String TITLE = "title";
public static final String PIC = "pic";
public static final String FOOD_STR = "food_str";


}


package alice.bw.com.app2.db;


import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;


import java.util.ArrayList;
import java.util.List;


import alice.bw.com.app2.FoodEntity;




/**
 * ����ģʽ����ͬһ�ű�
 * @author alice
 *
 */
public class MySQLiteDateBase {

private static MySQLiteDateBase mydb;
private MySQliteOpenHelper openHelper;

/**
* ���췽��˽�л�
* @param context
*/
private MySQLiteDateBase(Context context) {
super();
openHelper = new MySQliteOpenHelper(context);
}

/**
* ��ȡMySQLiteDateBase
* @param context
* @return
*/
public static synchronized MySQLiteDateBase getInstance(Context context){
if(mydb == null){
mydb = new MySQLiteDateBase(context);
}
return mydb;
}




public void addData(FoodEntity.DataBean data){
SQLiteDatabase db = null;
try {
db = openHelper.getReadableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put(MySQLiteColumn.PIC, data.getPic());
contentValues.put(MySQLiteColumn.TITLE, data.getTitle());
contentValues.put(MySQLiteColumn.FOOD_STR, data.getFood_str());
db.insert(MySQLiteColumn.TABLE_NAME, null, contentValues);
} catch (Exception e) {
}finally{
openHelper.closeDataBase(db);
}


}




public void addDatas(List<FoodEntity.DataBean> list){
SQLiteDatabase db = null;
try {
db = openHelper.getReadableDatabase();
for (int i = 0; i <list.size() ; i++) {
FoodEntity.DataBean data = list.get(i);
ContentValues contentValues = new ContentValues();
contentValues.put(MySQLiteColumn.PIC, data.getPic());
contentValues.put(MySQLiteColumn.TITLE, data.getTitle());
contentValues.put(MySQLiteColumn.FOOD_STR, data.getFood_str());
db.insert(MySQLiteColumn.TABLE_NAME, null, contentValues);


}


} catch (Exception e) {
}finally{
openHelper.closeDataBase(db);
}


}










public ArrayList<FoodEntity.DataBean> queryData(){
ArrayList<FoodEntity.DataBean> list = new ArrayList<FoodEntity.DataBean>();
Cursor cursor = null;
SQLiteDatabase db = null;
try {
db = openHelper.getReadableDatabase();
//��ѯ����
cursor = db.query(MySQLiteColumn.TABLE_NAME, new String[]{MySQLiteColumn.TITLE,MySQLiteColumn.PIC,MySQLiteColumn.FOOD_STR}, null, null, null, null, null, null);
int titleIndex = cursor.getColumnIndex(MySQLiteColumn.TITLE);
int picIndex = cursor.getColumnIndex(MySQLiteColumn.PIC);
int food_strIndex = cursor.getColumnIndex(MySQLiteColumn.FOOD_STR);
while (cursor.moveToNext()) {
String title = cursor.getString(titleIndex);
String pic = cursor.getString(picIndex);
String food_str = cursor.getString(food_strIndex);
FoodEntity.DataBean data = new FoodEntity.DataBean(title,pic,food_str);
list.add(data);
}
return list;
} catch (Exception e) {
}finally{
openHelper.closeDbAndCursor(db, cursor);
}
return null;
}




public boolean deletData(String name){


SQLiteDatabase db = null;
try {
db = openHelper.getReadableDatabase();
//ɾ��һ������
int i = db.delete(MySQLiteColumn.TABLE_NAME, MySQLiteColumn.TITLE+" = '"+name+"'", null);
if(i!=0){
return true;
}
} catch (Exception e) {
e.printStackTrace();
}finally{
openHelper.closeDataBase(db);
}
return false;
}






public boolean updateData(FoodEntity.DataBean data, String name){
SQLiteDatabase db = null;
try {
db = openHelper.getReadableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put(MySQLiteColumn.TITLE, data.getTitle());
contentValues.put(MySQLiteColumn.PIC, data.getPic());
contentValues.put(MySQLiteColumn.FOOD_STR, data.getFood_str());


int count = db.update(MySQLiteColumn.TABLE_NAME, contentValues, MySQLiteColumn.TITLE+" = '"+ name +"'", null);
if(count > 0){
return true;
}
} catch (Exception e) {


}finally{
openHelper.closeDataBase(db);
}
return false;
}






}



package alice.bw.com.app2.db;


import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;


public class MySQliteOpenHelper extends SQLiteOpenHelper{



public static final int VEISION = 1;//版本号
public static final String SQLITE_NAME = "food.db";//数据库的名字


public MySQliteOpenHelper(Context context) {
super(context, SQLITE_NAME, null, VEISION);
}


//������
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table if not exists data(_id INTEGER primary key autoincrement,title text ,pic text , food_str text)");
}


@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {


}







//�ر��α�
public void closeCursor(Cursor cursor){
if(cursor == null){
return;
}
cursor.close();
}

//�ر�db
public void closeDataBase(SQLiteDatabase db){
if(db == null){
return ;
}
db.close();
}

//�ر��α��db
public void closeDbAndCursor(SQLiteDatabase db,Cursor cursor){
closeCursor(cursor);
closeDataBase(db);
}




}


package alice.bw.com.app2;


import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Bitmap.CompressFormat;
import android.graphics.BitmapFactory;
import android.os.Environment;
import android.util.Log;


import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;


public class SDcardUtil {


// 保存图片至SD卡
public static void saveBitmapToSD(String key, Bitmap bitmap, Context mContext) {
if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
File file = null;
String path = mContext.getExternalCacheDir().getAbsolutePath() + File.separator
// +key;
+ key.substring(key.lastIndexOf("/") + 1);
Log.d("sxl", "saveBitmapToSD: "+path);
file = new File(path);


FileOutputStream outputStream = null;


try {
file.createNewFile();
outputStream = new FileOutputStream(file);
bitmap.compress(CompressFormat.JPEG, 100, outputStream);
outputStream.flush();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
if (outputStream != null) {
try {
outputStream.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}


}


}
}


// 从SD卡中将图片取出来
public static Bitmap getBitmapFromSD(String key, Context mContext) {
if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
String path = mContext.getExternalCacheDir().getAbsolutePath() + File.separator
// +key;
+ key.substring(key.lastIndexOf("/") + 1);
Bitmap bitmap = BitmapFactory.decodeFile(path);
return bitmap;
}


return null;
}
}



数据下载

package com.jj.week2;

import android.graphics.Bitmap;
import android.graphics.BitmapFactory;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

/**
 * Created by jj on 2017/12/9.
 */

public class HttpUtils {
    public static String getJsonFromNet(String path){
        try {
            URL url=new URL(path);
            HttpURLConnection conn=(HttpURLConnection)url.openConnection();
            conn.setRequestMethod("GET");
            conn.connect();
            if (conn.getResponseCode()==200){
                InputStream inputStream=conn.getInputStream();
                ByteArrayOutputStream outputStream=new ByteArrayOutputStream();
                byte[] b=new byte[1024];
                int len=0;
                while ((len=inputStream.read())!=-1){
                    outputStream.write(b,0,len);
                }
                return outputStream.toString();
            }
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

        return null;
    }
    public static Bitmap getBitmap(String path){
        URL url=null;
        HttpURLConnection huc=null;
        Bitmap bitmap=null;
        try {
            url=new URL(path);
            huc=(HttpURLConnection)url.openConnection();
            huc.connect();
            huc.setRequestMethod("GET");
            if (huc.getResponseCode()==200){
                bitmap= BitmapFactory.decodeStream(huc.getInputStream());
            }
            return bitmap;

        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            huc.disconnect();
        }

        return null;
    }
}

缺少一个实体类。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值