1.这个比较复杂 代码比较多发的这个是其中的一个页面 我就简单写一下思路吧 如果要往数据库里面添加的话 先创建一个数据库 然后在Dao层写增删改查方法 下面开始写页面展示内容 内容太多我也不多说了
public class Fragment01 extends Fragment {
String urlString = "http://api.expoon.com/AppNews/getNewsList/type/1/p/1";
List<JsonBean.DataBean> list = new ArrayList<JsonBean.DataBean>();
private ListView listview;
private MyListViewAdapter adapter;
private Dao dao;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment01, container, false);
//加载组件
listview = view.findViewById(R.id.listview);
//创建Dao对象
dao = new Dao(getActivity());
//适配器
adapter = new MyListViewAdapter(getActivity(),list);
listview.setAdapter(adapter);
//判断是否联网
Boolean resault = NetStateUtil.getResault(getActivity());
//有网
if(resault){
//创建异步管理类对象,调用子线程方法,发送接口
MyAsyncTask myAsyncTask = new MyAsyncTask();
myAsyncTask.execute(urlString);
}else{
Toast.makeText(getActivity(),"当前无网络",Toast.LENGTH_SHORT).show();
}
return view;
}
//异步管理类
class MyAsyncTask extends AsyncTask<String,Void,String> {
//子线程方法,参数为数组
@Override
protected String doInBackground(String... strings) {
//获取网络数据
String str = NetUtil.getInter(strings[0]);
//返回给主线程方法
return str;
}
//UI主线程方法
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
//解析
Gson gson = new Gson();
JsonBean jsonBean = gson.fromJson(s, JsonBean.class);
List<JsonBean.DataBean> data = jsonBean.getData();
//将解析出来的集合添加到自己的集合中
Log.i("zcq", "解析集合数据: "+data.toString());
list.addAll(data);
//添加到数据库
for (int i=0;i<list.size();i++){
ContentValues values = new ContentValues();
values.put("news_title",list.get(i).getNews_title());
values.put("news_summary",list.get(i).getNews_summary());
values.put("pic_url",list.get(i).getPic_url());
long add = dao.add("news", null, values);
if(add>0){
Log.i("zcq", "添加数据库成功: "+add);
}
}
//刷新适配器
adapter.notifyDataSetChanged();
}
}
}
2.
这个是网络解析数据
public class NetUtil {
public static String getInter(String string) {
try {
//网络解析数据
URL url = new URL(string);
try {
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
int responseCode = connection.getResponseCode();
if(responseCode==200){
InputStream inputStream = connection.getInputStream();
InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
BufferedReader reader = new BufferedReader(inputStreamReader);
String read = "";
String str = "";
while((read=reader.readLine())!=null){
str+=read;
}
return str;
}
} catch (IOException e) {
e.printStackTrace();
}
} catch (MalformedURLException e) {
e.printStackTrace();
}
return null;
}
}
3.
网络图片展示到列表上
public class MApp extends Application {
@Override
public void onCreate() {
super.onCreate();
ImageLoaderConfiguration configuration = new ImageLoaderConfiguration.Builder(this).build();
ImageLoader instance = ImageLoader.getInstance();
instance.init(configuration);
}
}
4.
这个是列表展示和网络请求图片的适配器
public class MyListViewAdapter extends BaseAdapter {
private Activity context;
private List<JsonBean.DataBean> list;
private ViewHolder holder;
public MyListViewAdapter(Activity context, List<JsonBean.DataBean> list) {
this.context = context;
this.list = list;
}
@Override
public int getCount() {`在这里插入代码片`
return list.size();
}
@Override
public Object getItem(int i) {
return null;
}
@Override
public long getItemId(int i) {
return 0;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
if(view==null){
view= View.inflate(context, R.layout.listview, null);
holder = new ViewHolder();
holder.listview_title = view.findViewById(R.id.listview_title);
holder.listview_img = view.findViewById(R.id.listview_img);
view.setTag(holder);
}else{
holder = (ViewHolder) view.getTag();
}
JsonBean.DataBean dataBean = list.get(i);
holder.listview_title.setText(dataBean.getNews_title());
ImageLoader instance = ImageLoader.getInstance();
instance.displayImage(dataBean.getPic_url(),holder.listview_img);
return view;
}
class ViewHolder{
private TextView listview_title;
private ImageView listview_img;
}
}