您的位置:首页 > 理论基础 > 计算机网络

Http请求解析Json与图片(AlertDialog)提示框

2017-08-09 14:31 323 查看
public class HttpActivity extends AppCompatActivity {

private ListView lv;
List<Da.ResultBean.ListBean> list;
private MyHttpSqlite sqlite;
private MyAdapter adapter;
private Bitmap bit;

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

lv = (ListView) findViewById(R.id.lv);
list = new ArrayList<Da.ResultBean.ListBean>();
// 实例化工具类
sqlite = new MyHttpSqlite(this);

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

@Override
protected void onPostExecute(String s) {
// 设置适配器
adapter = new MyAdapter();
lv.setAdapter(adapter);

super.onPostExecute(s);
}

@Override
protected String doInBackground(String... strings) {

// 方法
getData();

return null;

}
}.execute();

// 点击弹出AlertDialog删除
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, final int i, long l) {

AlertDialog.Builder builder = new AlertDialog.Builder(HttpActivity.this);
builder.setTitle("警告!");
builder.setMessage("确定删除吗?");
builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int j) {

delete(list.get(i).getTitle());
Toast.makeText(HttpActivity.this, list.get(i).getTitle() + "已删除", Toast.LENGTH_SHORT).show();
list.remove(i);
adapter.notifyDataSetChanged();

}
});

builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {

Toast.makeText(HttpActivity.this, "取消", Toast.LENGTH_SHORT).show();
}
});

builder.show();

}
});

}

// 删除的方法
private void delete(String title) {

SQLiteDatabase db = sqlite.getWritableDatabase();
db.delete("hu", " title = ?", new String[]{title});
db.close();

}

private void getData() {

// 请求网络资源并解析

try {
URL url = new URL("http://169.254.19.1:8080/huhu/weixin.txt");

HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setConnectTimeout(5000);
conn.setReadTimeout(5000);
conn.setRequestMethod("GET");

int code = conn.getResponseCode();

if (code == 200) {
Gson gson = new Gson();
Da da = gson.fromJson(new InputStreamReader(conn.getInputStream(), "UTF-8"), Da.class);
list = da.getResult().getList();
add(list);
}

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

}

// 把解析的添加到数据库
public void add(List<Da.ResultBean.ListBean> list) {

SQLiteDatabase db = sqlite.getWritableDatabase();

for (int i = 0; i < list.size(); i++) {

ContentValues valuses = new ContentValues();
valuses.put("id", list.get(i).getId());
valuses.put("title", list.get(i).getTitle());
valuses.put("source", list.get(i).getSource());
valuses.put("firstImg", list.get(i).getFirstImg());
valuses.put("url", list.get(i).getUrl());
db.insert("hu", null, valuses);
db.close();
}

}

class MyAdapter extends BaseAdapter {

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

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

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

@Override
public View getView(final int i, View view, ViewGroup viewGroup) {

final ViewHolder holder;
// 优化
if (view == null) {
holder = new ViewHolder();
view = View.inflate(HttpActivity.this, R.layout.sw_item, null);
holder.tv_id = view.findViewById(R.id.tv_id);
holder.tv_title = view.findViewById(R.id.tv_title);
holder.tv_source = view.findViewById(R.id.tv_source);
holder.iv = view.findViewById(R.id.iv_firstImg);
holder.tv_url = view.findViewById(R.id.tv_url);
view.setTag(holder);
} else {
holder = (ViewHolder) view.getTag();
}

holder.tv_id.setText(list.get(i).getId());
holder.tv_title.setText(list.get(i).getTitle());
holder.tv_source.setText(list.get(i).getSource());
new Thread(new Runnable() {
@Override
public void run() {
final Bitmap image = getImage(list.get(i).getFirstImg());
runOnUiThread(new Runnable() {
@Override
public void run() {
holder.iv.setImageBitmap(image);
}
});
}
}) {
}.start();
holder.tv_url.setText(list.get(i).getUrl());
return view;
}
}

// 获取网络图片
private Bitmap getImage(String path) {

try {
URL url = new URL(path);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");

int code = conn.getResponseCode();
if (code == 200) {
// 因为该地址是一个图片的地址,所以返回的数据流就是一个图片的数据流
// 直接用该图片的数据流 转换成 一个Bitmap
bit = BitmapFactory.decodeStream(conn.getInputStream());

}

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

class ViewHolder {

TextView tv_id, tv_title, tv_source, tv_firstImg, tv_url;
ImageView iv;

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: