实体类:
public class NewsList implements Serializable{
private String ctime,title,description,picUrl,url;
public NewsList() {
}
public NewsList(String ctime, String title, String description, String picUrl, String url) {
this.ctime = ctime;
this.title = title;
this.description = description;
this.picUrl = picUrl;
this.url = url;
}
public String getCtime() {
return ctime;
}
public void setCtime(String ctime) {
this.ctime = ctime;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getPicUrl() {
return picUrl;
}
public void setPicUrl(String picUrl) {
this.picUrl = picUrl;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
}
自定义adapter:
public class MyAdapter extends BaseAdapter {
private Context context
private List<NewsList> list
private LayoutInflater inflater
public MyAdapter(Context context, List<NewsList> list) {
this.context = context
this.list = list
inflater=LayoutInflater.from(context)
}
public void setList(List<NewsList> list) {
this.list = list
}
@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.newslist_item,null)
holder.iv_pic= (ImageView) convertView.findViewById(R.id.iv_pic)
holder.tv_desc= (TextView) convertView.findViewById(R.id.tv_desc)
holder.tv_title= (TextView) convertView.findViewById(R.id.tv_title)
holder.tv_ctime= (TextView) convertView.findViewById(R.id.tv_ctime)
convertView.setTag(holder)
}else {
holder= (ViewHolder) convertView.getTag()
}
NewsList news= (NewsList) getItem(position)
holder.tv_title.setText(news.getTitle().toString())
holder.tv_desc.setText(news.getDescription().toString())
holder.tv_ctime.setText(news.getCtime().toString())
Picasso.with(context).load(news.getPicUrl()).into(holder.iv_pic)
// Bitmap bitmap=getHttpBitmap(news.getPicUrl())
// holder.iv_pic.setImageBitmap(bitmap)
return convertView
}
class ViewHolder {
private ImageView iv_pic
private TextView tv_title,tv_desc,tv_ctime
}
/**
* 根据图片url获取网络图片的Bitmap
*/
public static Bitmap getHttpBitmap(String url){
URL url1
Bitmap bitmap=null
try {
url1=new URL(url)
HttpURLConnection conn= (HttpURLConnection) url1.openConnection()
// conn.setConnectTimeout(5000)
conn.setDoInput(true)
conn.setDoOutput(true)
conn.setUseCaches(false)
//获取流资源
InputStream is=conn.getInputStream()
//解析流得到图片
bitmap=BitmapFactory.decodeStream(is)
is.close()
} catch (MalformedURLException e) {
e.printStackTrace()
} catch (IOException e) {
e.printStackTrace()
}
return bitmap
}
MainAcvitity
public class MainActivity extends AppCompatActivity {
private PullToRefreshListView lv
private String url="https://api.tianapi.com/wxnew/?key=8d6e3228d25298f13af4fc40ce6c9679&num=10&page="
private MyThread thread=null
private String result=null
private MyHandle handle=null
private List<NewsList> list1
public static final int PAGE=1
public static final int LOADING=2
public int page =1
private MyAdapter adapter=null
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
lv= (PullToRefreshListView) findViewById(R.id.lv)
lv.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {
@Override
public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {
page=1
getData()
}
@Override
public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {
page++
getData()
}
})
handle=new MyHandle()
list1=new ArrayList<>()
adapter=new MyAdapter(this,list1)
lv.setAdapter(adapter)
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
NewsList newsList= list1.get(position-1)
String url=newsList.getUrl()
Intent intent=new Intent(view.getContext(),Main2Activity.class)
intent.putExtra("url",url)
startActivity(intent)
}
})
getData()
// new Thread(runable).start()
}
private void getData(){
if(thread==null){
thread=new MyThread()
thread.start()
}
}
class MyThread extends Thread{
@Override
public void run() {
super.run()
Message message=null
if(page==1){
result=loadingGet(url+String.valueOf(PAGE))
message= handle.obtainMessage(PAGE,result)
}else {
result=loadingGet(url+String.valueOf(page))
message= handle.obtainMessage(LOADING,result)
}
handle.sendMessage(message)
thread=null
}
}
/**
* 自定义访问网络的get方法,获取数据
*/
private String loadingGet(String url0){
try {
URL newUrl=new URL(url0)
HttpsURLConnection conn= (HttpsURLConnection) newUrl.openConnection()
int code=conn.getResponseCode()
if(code==200){
InputStream inputStream=conn.getInputStream()
InputStreamReader isreader=new InputStreamReader(inputStream)
String line=""
BufferedReader reader=new BufferedReader(isreader)
StringBuffer buffer=new StringBuffer()
while ((line=reader.readLine())!=null){
buffer.append(line)
}
reader.close()
isreader.close()
inputStream.close()
return buffer.toString()
}
} catch (MalformedURLException e) {
e.printStackTrace()
} catch (IOException e) {
e.printStackTrace()
}
return "访问失败"
}
/**
* ⑤自定义Handle类接收并处理数据
*
*/
class MyHandle extends Handler{
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg)
switch (msg.what){
case PAGE:
// String url1=url+String.valueOf(PAGE)
list1=parseJosn(msg.obj.toString())
adapter.setList(list1)
adapter.notifyDataSetChanged()
// lv.setAdapter(adapter)
break
case LOADING:
// String url2=url+String.valueOf(LOADING)
list1.addAll(parseJosn(msg.obj.toString()))
adapter.notifyDataSetChanged()
// lv.setAdapter(adapter)
break
}
lv.onRefreshComplete()
}
}
// Runnable runable =new Runnable() {
// @Override
// public void run() {
// result=loadingGet()
// Message message=handle.obtainMessage(1,result)
// handle.sendMessage(message)
// }
// }
新闻详情页Main2Acvitity
public class Main2Activity extends AppCompatActivity {
private WebView wv;
private String url_content;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
wv= (WebView) findViewById(R.id.wv);
wv.setWebViewClient(new MyClient());
Intent intent=getIntent();
url_content=intent.getStringExtra("url");
wv.loadUrl(url_content);
wv.getSettings().setBuiltInZoomControls(true);
wv.getSettings().setJavaScriptEnabled(true);
}
class MyClient extends WebViewClient{
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url_content);
return super.shouldOverrideUrlLoading(view, url);
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
if(Build.VERSION.SDK_INT>Build.VERSION_CODES.LOLLIPOP){
view.loadUrl(request.getUrl().toString());
}
return super.shouldOverrideUrlLoading(view, request);
}
}