MainActivity内容
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private String mUrl = "https://suggest.taobao.com/sug?code=utf-8&q=%E6%89%8B%E6%9C%BA";
private Button hq_btn;
private ListView show_lv;
private MyAdapter mAdapter;
private List<List<String>> mList = new ArrayList<>();
private sqldao sqldao;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
//异步
mAdapter = new MyAdapter(MainActivity.this,mList);
show_lv.setAdapter(mAdapter);
show_lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, final int position, long id) {
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setIcon(R.drawable.ic_launcher_background);
builder.setTitle("系统提示");
builder.setMessage("确认要删除吗?");
builder.setPositiveButton("确认", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
mList.remove(position);
mAdapter.notifyDataSetChanged();
}
});
builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
AlertDialog creat = builder.create();
creat.show();
}
});
sqldao = new sqldao(MainActivity.this);
if (sqldao.selectData().isEmpty()){
new MyTask().execute(mUrl);
}else {
String json = sqldao.selectData();
Gson gson = new Gson();
User user = gson.fromJson(json, User.class);
mList.addAll(user.getResult());
mAdapter.notifyDataSetChanged();
}
}
private void initView() {
show_lv = (ListView) findViewById(R.id.show_lv);
}
@Override
public void onClick(View v) {
}
//定义一个类继承AsyncTask
class MyTask extends AsyncTask<String, Void, List<List<String>>> {
@Override
protected List<List<String>> doInBackground(String... strings) {
String data = HttpUtils.getData(strings[0]);
Gson gson = new Gson();
User user = gson.fromJson(data, User.class);
ContentValues contentValues = new ContentValues();
contentValues.put("json",data);
sqldao.insertData(contentValues);
return user.getResult();
}
@Override
protected void onPostExecute(List<List<String>> lists) {
super.onPostExecute(lists);
mList.addAll(lists);
mAdapter.notifyDataSetChanged();
}
}
MyHelper
public class MyHelper extends SQLiteOpenHelper {
public MyHelper(Context context) {
super(context, "zhuhuohuo", null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table huohuo(json text )");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
SQL Dao
public class sqldao {
private final SQLiteDatabase db;
private final MyHelper helper;
public sqldao(Context context) {
helper = new MyHelper(context);
db = helper.getWritableDatabase();
}
public String selectData(){
String jsonStr = "";
Cursor cursor = db.query("huohuo", null, null, null, null, null, null);
while (cursor.moveToNext()){
jsonStr = cursor.getString(cursor.getColumnIndex("json"));
}
return jsonStr;
}
public long insertData(ContentValues values) {
long huohuo = db.insert("huohuo", null, values);
return huohuo;
}
}
请求方式
public class Utle {
public static String you(String mUrl) throws Exception{
URL url = new URL(mUrl);
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setRequestMethod("GET");
urlConnection.setConnectTimeout(5000);
InputStream stream = urlConnection.getInputStream();
String inputStr = getInputStr(stream);
return inputStr;
}
public static String getInputStr(InputStream stream) throws IOException {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(stream));
StringBuffer sb = new StringBuffer();
String str = null;
while ((str = bufferedReader.readLine())!=null){
sb.append(str);
}
return sb.toString();
}
}
适配器
public class MyAdapter extends BaseAdapter {
private Context mcontext;
private List<List<String>> mList;
public MyAdapter(Context mcontext, List<List<String>> mList) {
this.mcontext = mcontext;
this.mList = mList;
}
@Override
public int getCount() {
return mList.size();
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder;
if (convertView==null){
viewHolder = new ViewHolder();
convertView = View.inflate(mcontext, R.layout.list_item,null);
viewHolder.textView = convertView.findViewById(R.id.list_item_tv);
convertView.setTag(viewHolder);
}else{
viewHolder = (ViewHolder) convertView.getTag();
}
viewHolder.textView.setText(mList.get(position).toString());
return convertView;
}
class ViewHolder {
private TextView textView;
}
}
布局MainActivity
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
android:orientation="vertical">
<ListView
android:id="@+id/show_lv"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:id="@+id/list_item_tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>