Http协议(下载笑话网页,Get方式解析json)
json
适用于现代 C++ 的 JSON。
项目地址:https://gitcode.com/gh_mirrors/js/json
免费下载资源
·
自定义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 个月前
更多推荐
已为社区贡献9条内容
所有评论(0)