学习了新闻客户端开发后,有很多是通用的,就把客户端用到的一些做个笔记,已备以后使用,主要用到的知识点有:

1.  Android网络编程

2.  Android中BaseAdapter的使用

3.  Android中Webview的使用

网络编程工具类:

public class HttpUtils {

public static void getNewsJSON(final String url,final Handler handler){

new Thread(new Runnable() {

@Override

public void run() {

HttpURLConnection conn;

InputStream is;

try {

conn = (HttpURLConnection) new URL(url).openConnection();

conn.setRequestMethod("GET");

is = conn.getInputStream();

BufferedReader reader = new BufferedReader(new InputStreamReader(is));

String line="";

StringBuilder result = new StringBuilder();

while ((line = reader.readLine()) != null){

result.append(line);

}

Message msg = new Message();

msg.obj = result.toString();

handler.sendMessage(msg);

}  catch (Exception e) {

e.printStackTrace();

}

}

}).start();

}

public static void setBitmap(final ImageView ivPic,final String pic_url){

new Thread(new Runnable() {

@Override

public void run() {

try {

HttpURLConnection conn = (HttpURLConnection) new URL(pic_url).openConnection();

conn.connect();

InputStream is = conn.getInputStream();

Bitmap bitmap = BitmapFactory.decodeStream(is);

ivPic.setImageBitmap(bitmap);

is.close();

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}).start();

}

BaseAdapter 适配器:

public class NewsAdapter extends BaseAdapter {

private Context context;

private List newsList;

public NewsAdapter(Context context,List newsList) {

super();

this.context = context;

this.newsList = newsList;

}

@Override

public int getCount() {

return newsList.size();

}

@Override

public News getItem(int arg0) {

return newsList.get(arg0);

}

@Override

public long getItemId(int arg0) {

return arg0;

}

@Override

public View getView(int arg0, View arg1, ViewGroup arg2) {

if(arg1 == null){

arg1 = LayoutInflater.from(context).inflate(R.layout.news_item, null);

TextView tvTitle = (TextView) arg1.findViewById(R.id.tvTitle);

TextView tvDesc = (TextView) arg1.findViewById(R.id.tvdesc);

TextView tvTime = (TextView) arg1.findViewById(R.id.tvTime);

ImageView ivPic = (ImageView) arg1.findViewById(R.id.ivPic);

News news = newsList.get(arg0);

tvTitle.setText(news.getTitle());

tvDesc.setText(news.getDesc());

tvTime.setText(news.getTime());

String pic_url = news.getPic_url();

HttpUtils.setBitmap(ivPic, pic_url);

}

return arg1;

}

}

MainActivity界面:

public class MainActivity extends Activity implements OnItemClickListener{

private ListView lvNews;

private NewsAdapter adapter;

private List newsList;

public static final String GET_NEWS_URL="";

private Handler getNewsHandler = new Handler(){

public void handleMessage(android.os.Message msg) {

String jsonData= (String) msg.obj;

System.out.println(jsonData);

try {

JSONArray jsonArray = new JSONArray(jsonData);

for (int i = 0; i < jsonArray.length(); i++) {

JSONObject object = jsonArray.getJSONObject(i);

String title = object.getString("title");

String desc = object.getString("desc");

String time = object.getString("time");

String content_url = object.getString("content_url");

String pic_url = object.getString("pic_url");

newsList.add(new News(title, desc, time, content_url, pic_url));

adapter.notifyDataSetChanged();

}

} catch (Exception e) {

e.printStackTrace();

}

};

};

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

lvNews = (ListView) findViewById(R.id.lv_News);

newsList = new ArrayList();

adapter = new NewsAdapter(this,newsList);

lvNews.setOnItemClickListener(this); //设置监听

lvNews.setAdapter(adapter);//设置适配器

HttpUtils.getNewsJSON(GET_NEWS_URL, getNewsHandler);

}

@Override

public void onItemClick(AdapterView> arg0, View arg1, int position, long arg3) {

News news = newsList.get(position);

Intent intent = new Intent(this, BrowsNewsActivity.class);

intent.putExtra("content_url", news.getContent_url());

startActivity(intent);

}

}

BrowsNewsActivity界面:

public class BrowsNewsActivity extends Activity { private WebView webView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_brows_news); webView = (WebView) findViewById(R.id.webView); String content_url = getIntent().getStringExtra("content_url"); webView.loadUrl(content_url); webView.getSettings().setJavaScriptEnabled(true); webView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK); } }

android新闻客户端实验报告,Android 新闻客户端学习笔记相关推荐

  1. android消息响应实验报告,android实验一实验报告-20210401011015.docx-原创力文档

    Last revision on 21 December 2020 Last revision on 21 December 2020 Android实验一实验报告 Android实验报告一 姓名:丁 ...

  2. android对象识别实验报告,Android 3相册实验报告.doc

    Android 3相册实验报告 中原工学院计算机学院 软件平台开发技术大作业 班 级: 软件121 作品名称: 3D相册 姓 名: 辛俊闪 学 号: 201200834101 指导教师: 刘凤华 20 ...

  3. android博学谷实验报告,Android项目实战系列—基于博学谷(四)我的模块(上)...

    image 由于这个模块内容较多,篇幅较长,请耐心阅读. "我"的模块分为四个部分 一."我"的界面 1.底部导航栏 (1).导入界面图片 将底部导航栏所需图片 ...

  4. Android录音器实验报告,Android实现录音(MediaRecorder)

    Android提供了两个API用于录音的实现:MediaRecorder 和 AudioRecord,各有优劣. 1.MediaRecorder 已经集成了录音.编码.压缩等,支持少量的录音音频格式, ...

  5. Android五子棋开发实验报告,Android五子棋游戏实验报告.doc

    Android开发总结报告 _____扫雷小游戏 2011年1月 一.背景 扫雷是一个简单的单人游戏.游戏的目的是在没有触碰任何一个地雷的情形下清空一个雷区.扫雷不仅有Windows版本,也有其他平台 ...

  6. 20175333曹雅坤实验四《Android程序设计》实验报告

    20175333实验四<Android程序设计>实验报告 一.实验内容及步骤 - Android程序设计-1 Android Stuidio的安装测试: 参考<Java和Androi ...

  7. 20155318 《Java程序设计》实验四 (Android程序设计)实验报告

    20155318 <Java程序设计>实验四 (Android程序设计)实验报告 实验内容 基于Android Studio开发简单的Android应用并部署测试; 了解Android.组 ...

  8. 北理计算机网络实验报告,北京理工大学计算机网络实践ftp客户端实验报告.doc...

    北京理工大学计算机网络实践ftp客户端实验报告.doc 实验五FTP客户端程序 实验目的 文件传送协议FTP是Internet中广泛使用的服务协议之一,FTP协议是客 户/服务器之间进行文件传递的协议 ...

  9. php新闻实验总结,新闻系统实验报告.doc

    新闻系统实验报告 基于B/S结构的程序设计 ---新闻发布系统 1.实验目的: 通过开发一个简单的B/S系统,掌握基于web的程序设计的基本流程和方法,熟悉一些开发工具的使用. 2.实验要求: 开发一 ...

最新文章

  1. Highmaps网页图表教程之下载Highmaps与Highmaps的地图类型
  2. 新版PyTorch发布!新增TorchScript API,扩展ONNX导出……4大功能更新值得关注
  3. C++ Primer 5th笔记(chap 17 标准库特殊设施)输出补白
  4. 找不到redis得pid文件_电脑提示Windows找不到文件?试试这两个技巧,轻松解决!...
  5. Ubantu键盘快捷键
  6. 前端学习(3226):回调形式的ref
  7. 干货!操作系统基础知识汇总!转给要面试的同学吧
  8. mybatis 报错: Invalid bound statement (not found)
  9. 从头开始-02.C语言基础
  10. 数据结构考研:线性表,顺序表,有序表,链表,数组的概念的区别与联系(软件工程/计算机/王道论坛)
  11. 正则表达式,js表单验证
  12. .json格式转为.yml格式
  13. 记录小米8连接电脑之后的文件位置
  14. 影响力在职场的重要性
  15. Oracle公有云的Modifiable VCN功能
  16. 物联网跟人的神经网络相似通过各种信息传感设备
  17. Python 实现文件关键字扫描
  18. 通过kiwix浏览wikipedia
  19. ASP.NET搭建企业微信公众平台源码
  20. [转]通过 BT 种子 Hash 值从 BitComet 服务器上下载种子文件

热门文章

  1. GIS地理信息科学专业有哪些高校可以选择?
  2. PC机组成——内存储器
  3. [架构之路-177]-《软考-系统分析师》-17-嵌入式系统分析与设计 -2- 系统分析与设计、低功耗设计
  4. 树图 [ TreeMap ]
  5. GFP:新一代多业务传输技术(转)
  6. 《全程软件测试》读书心得
  7. mysql、oracle、sqlserver各自的默认端口号
  8. python 配置 mitmproxy 证书
  9. java算法之因式分解
  10. php判断是否是微信浏览器,php判断是否为微信浏览器浏览简单示例