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

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

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); } }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值