Android加载列表方法

需要配置联网权限

需要配置两个xml页面

    //列表   
<ListView
            android:scrollbars="none"
            android:overScrollMode="never"
            android:overScrollFooter="@android:color/white"
            android:overScrollHeader="@android:color/black"
            android:divider="@null"
            android:id="@+id/listview"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
        </ListView>
    private static final String TAG ="json";
    private List<Map<String, Object>> lists;
    private SimpleAdapter adapter;
    private ListView listView;



new Thread() {
            @Override
            public void run() {
                //创建okhtto请求的对象
                OkHttpClient okHttpClient = new OkHttpClient();
                //创建请求连接,url里面存放请求连接,get表示其实get请求
                Request request = new Request.Builder().url("https://www.nhl520.cn/json.php").get().build();

                try {

                    Response response = okHttpClient.newCall(request).execute();
                    //定义字符串接收请求信息
                    String string2 = response.body().string();
                    System.out.println("String:" + string2);


                    JSONObject jsonObjectALL = new JSONObject(string2);
                    // 通过标识(person),获取JSON数组
                    JSONArray jsonArray = jsonObjectALL.getJSONArray("person");

                    // Log.e("提交失败", jsonArray+"");
                    lists = new ArrayList<>();

                    for (int i = 0; i < jsonArray.length(); i++) {
                        // JSON数组里面的具体-JSON对象
                        JSONObject jsonObject = jsonArray.getJSONObject(i);
                        String name = jsonObject.optString("name", null);
                        String time = jsonObject.optString("time", null);
                        String content = jsonObject.optString("content", null);
                        String imgtx = jsonObject.optString("tx", null);
                        String imgurl = jsonObject.optString("url", null);
                        //System.out.println(age);


                        Map<String, Object> map = new HashMap<>();
                        map.put("name", name);
                        map.put("time", time);
                        map.put("content", content);
                        map.put("tx", imgtx);
                        map.put("urlimg", imgurl);
                        lists.add(map);
                       // lists2.add(imgurl);
                    }


                    //适配器指定应用自己定义的xml格式
                    adapter = new SimpleAdapter(getActivity(), lists, R.layout.item, new String[]{"name", "time", "content","tx","urlimg"}, new int[]{R.id.text1, R.id.text2, R.id.text3,R.id.itemtx,R.id.image1});
                    listView = view.findViewById(R.id.listview);

                    //利用glide在列表加载图片开始
                    adapter.setViewBinder(new SimpleAdapter.ViewBinder() {
                        @Override
                        public boolean setViewValue(View view, Object data, String textRepresentation) {
                            if (view instanceof ImageView){
                                ImageView iv= (ImageView)view;
                                GlideUtil.GlideWithPlaceHolder(getActivity(), data.toString())
                                        .placeholder(R.mipmap.itemtrue)//加载过程中图片展示
                                        .error(R.mipmap.itemflase)//加载失败图片展示
                                        .into(iv);

                                return true;
                            }else
                                return false;
                        }

                    });  //利用glide在列表加载图片结束

                    //要想与主UI交互需要使用runOnUiThread这个方法实现Runnable的抽象类,进行交互
                    getActivity().runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            listView.setAdapter(adapter);
                        }
                    });


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

再配置Java类

public class GlideUtil {
    public static RequestBuilder<Drawable> GlideWithPlaceHolder(Context context, Object object) {
        return Glide.with(context).load(object).apply(new RequestOptions().placeholder(R.mipmap.home).dontAnimate());
        //加载图片
    }

}

二哈

文章作者信息...

留下你的评论

*评论支持代码高亮<pre class="prettyprint linenums">代码</pre>

相关推荐