效果图展示:
实现的效果:
1.热门商品搜索栏中的数据从网络接口获取
2.搜索历史商品中的数据从SQLite数据库中获取
3.当点击热门商品搜索的时候,该数据会立刻出现在搜索历史商品中,不会重复增加已经出现过的商品,历史中的商品按照最新时间排序。
4.效果图中的button没有做监听,其实现原理是:获取EditText中的内容,按照服务端的接口格式要求,发送get请求,访问服务端获取相应的数据。
5.搜索历史商品栏的展示数据比较长是由于在bean中对toString 方法做了以下的重写。直接return hotword 也是可以的。
@Override
public String toString() {
return "SearchDBData [hotword=" + hotword + "]";
}
重要知识点:
1.AsyncTask 的使用:
2.json数据解析:
3.ExpandableListView的使用:
4.表的设计和SQLiteDatabase的增删查改操作:
先贴上代码,后面再对一些重要的代码做解释说明:
public class SearchFragment extends BaseFragment {
private ExpandableListView mExpandableListView;
private EditText inputEditText;
private Button searchButton;
private SearchRecommendData recommendData;
private ArrayList<String> keywordsList = new ArrayList<String>();
private MyAdapter adapter;
private List<SearchDBData> findAllList = new ArrayList<SearchDBData>();
private HistoryDao dao;
@Override
public void getData() {
// 访问网络获取数据:热门搜索
new AsyncTask<Void, Void, Void>() {
@Override
protected Void doInBackground(Void... params) {
String url = "http://xxxxxxxxxxxxxxx";
String json = HttpUtil.get(url, "utf-8");
// recommendData = JSON.parseObject(json,
// SearchRecommendData.class);
Gson gson = new Gson();
recommendData = gson.fromJson(json, SearchRecommendData.class);
keywordsList = recommendData.search_keywords;
// 访问数据库获取历史记录
findAllList = dao.findAll();
return null;
};
protected void onPostExecute(Void result) {
if (adapter == null) {
adapter = new MyAdapter();