自定义adapter:

public class MyAdapter extends BaseAdapter {
    private Context context;
    private List<Joker> list;
    private LayoutInflater inflater = null;

    public MyAdapter(Context context, List<Joker> list) {
        this.context = context;
        this.list = list;
        inflater = LayoutInflater.from(context);
    }

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

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

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

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder holder=null;
        if(convertView==null){
            holder=new ViewHolder();
            convertView=inflater.inflate(R.layout.joker_item,null);
            holder.tv_title= (TextView) convertView.findViewById(R.id.tv_title);
            holder.tv_content= (TextView) convertView.findViewById(R.id.tv_content);
            holder.tv_url= (TextView) convertView.findViewById(R.id.tv_url);
            holder.tv_content.setMovementMethod(ScrollingMovementMethod.getInstance());
            convertView.setTag(holder);
        }else {
            holder= (ViewHolder) convertView.getTag();
        }
        Joker joker= (Joker) getItem(position);
        holder.tv_title.setText(joker.getTitle().toString());
        holder.tv_content.setText(joker.getContent().toString()+joker.getPoster());
//       CharSequence cs= Html.escapeHtml(joker.getContent().toString());
//        holder.tv_content.setText(cs);
//        holder.tv_content.setMovementMethod(LinkMovementMethod.getInstance());//点击时候产生超链接
        holder.tv_url.setText(joker.getUrl().toString());
        holder.tv_url.setMovementMethod(LinkMovementMethod.getInstance());
        return convertView;
    }

    class ViewHolder {
        private TextView tv_title,tv_content,tv_url;
    }
}

MainAcvitity:

public class MainActivity extends AppCompatActivity {
    private ListView lv_joker;
    private String url="http://api.laifudao.com/open/xiaohua.json";
    private MyThread thread=null;
    private MyHandle handle=null;
    private List<Joker> list=new ArrayList<>();
    private   String result=null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        handle=new MyHandle();
        lv_joker= (ListView) findViewById(R.id.lv_joker);
//②在主线程中开启子线程
        if(thread==null){
            thread=new MyThread();
            thread.start();
        }
    }
    /**
     * ①定义子线程用于访问网络获取数据并发送给主线程
     */
    class  MyThread extends Thread{
        //重写run方法

        @Override
        public void run() {
            super.run();
            //④调用访问网络的get方法,并获取数据发送给主线程,
              result=loadingGet();
                Message message=handle.obtainMessage(1,result);
                handle.sendMessage(message);
        }
    }
    /**
     * ③自定义访问网络的get方法,获取数据
     */
    private String loadingGet(){
        try {
            URL newUrl=new URL(url);
            HttpURLConnection conn= (HttpURLConnection) newUrl.openConnection();
            conn.setRequestMethod("GET");
            int code=conn.getResponseCode();
            if(code==200){
                InputStream is=conn.getInputStream();
                InputStreamReader inreader=new InputStreamReader(is);
                String line="";
                BufferedReader reader=new BufferedReader(inreader);
                StringBuffer buffer=new StringBuffer();
                while ((line=reader.readLine())!=null){
                    buffer.append(line);
                }
                reader.close();
                inreader.close();
                is.close();
                conn.disconnect();
                return buffer.toString();
            }
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return "访问失败";
    }
    /**
     * ⑤自定义Handle类接收并处理数据
     *
     */
    class MyHandle extends Handler{
        private JSONArray array=null;
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);

            switch (msg.what){
                case 1:
                    try {
                        array=new JSONArray(result);
                        for (int i = 0; array!=null&&i <array.length() ; i++) {
                            JSONObject obj=array.getJSONObject(i);
                            Joker joker=new Joker();
                            joker.setTitle(obj.getString("title"));
                            joker.setContent(obj.getString("content")+obj.getString("poster"));
                            joker.setUrl(obj.getString("url"));
                            list.add(joker);
                        }
                        MyAdapter adapter=new MyAdapter(MainActivity.this,list);
                        lv_joker.setAdapter(adapter);

                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                    break;
            }
        }
    }
GitHub 加速计划 / js / json
41.72 K
6.61 K
下载
适用于现代 C++ 的 JSON。
最近提交(Master分支:1 个月前 )
960b763e 2 个月前
8c391e04 5 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐