ListView的应用,模拟网易新闻

来源:互联网 发布:腾讯漫画破解软件 编辑:程序博客网 时间:2024/05/18 02:37
在实际开发中,一个项目就是以这种形式进行开发的
    (1)在服务器上获取下来json数据
    (2)用Gson或者是fastJson来解析json数据
    (3)解析完成的json数据存放在javaBean中
    (4)在javaBean中拿出数据进行一个填充View的操作
下面举一个Demo,也是listview的应用场景。看看具体的应用:
第一个类:
public class NewsBean {
public String title;
public String des;
public String url;
public Drawable drawable;
}
第二个类:
public class NewsDao {
public static ArrayList<NewsBean> getAllNews(Context context){
    ArrayList<NewsBean> news_lists = new ArrayList<NewsBean>();
    for(int i=0;i<100;i++){
        NewsBean newsBean = new NewsBean();
        newsBean.title="万万没想到,口语可以提升这么快";
        newsBean.des="不看你会后悔";
        newsBean.url="http://www.cctv.com";
        newsBean.drawable=context.getResources().getDrawable(R.drawable.ic_launcher);
        //把标题,描述,网址,图片等即一条网络消息放置到ArrayList集合中作为第一个元素
        news_lists.add(newsBean);
        
        NewsBean newsBean1 = new NewsBean();
        newsBean1.title="中国新声音";
        newsBean1.des="小鲜肉不错哟";
        newsBean1.url="http://www.cctv.com";
        newsBean1.drawable=context.getResources().getDrawable(R.drawable.icon1);
        //把标题,描述,网址,图片等即一条网络消息放置到ArrayList集合中作为第二个元素
        news_lists.add(newsBean1);
        
        NewsBean newsBean2 = new NewsBean();
        newsBean2.title="人民日报";
        newsBean2.des="必看!教育部公布第一批。。。";
        newsBean2.url="http://www.cctv.com";
        newsBean2.drawable=context.getResources().getDrawable(R.drawable.icon2);
        //把标题,描述,网址,图片等即一条网络消息放置到ArrayList集合中作为第三个元素
        news_lists.add(newsBean2);
        
        
                
    }
    return news_lists;
    
}
}
第三个类:
public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ListView lv_news=(ListView) findViewById(R.id.lv_news);
        ArrayList<NewsBean> allNews = NewsDao.getAllNews(this);
        //设置适配器将存放在ArrayList中的数据传进去,做显示.里面的小括号还有传参的过程
        lv_news.setAdapter(new NewsAdapter(allNews));
        lv_news.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {
                //当前索引位置的数据,其实就是listview的getItem()方法
                NewsBean newsbean =(NewsBean) parent.getItemAtPosition(position);
            //这其实就是一个跳转,跳转到Goole浏览器
                Intent intent = new Intent();
                intent.setAction(Intent.ACTION_VIEW);
                intent.setData(Uri.parse(newsbean.url));
                startActivity(intent);
                Toast.makeText(MainActivity.this, newsbean.url, 0).show();
            }
        });
    }
    public class NewsAdapter extends BaseAdapter{
        ArrayList<NewsBean> allNews=new ArrayList<NewsBean>();
        public NewsAdapter(ArrayList<NewsBean> News) {
            this.allNews=News;
        }
        //ListView的条目个数
        public int getCount() {
            return allNews.size();
        }
        //当前索引的数据
        public Object getItem(int position) {
            return allNews.get(position);
        }
        //获取当前条目的位置
        public long getItemId(int position) {
            return position;
        }
        //填充数据,返回一个view
        public View getView(int position, View convertView, ViewGroup parent) {
            View view =null;
            if(convertView !=null){
                view=convertView;
            }else{
                //将一个xml布局文件填充给一个view
                view  = View.inflate(MainActivity.this, R.layout.activity_items, null);

            }
            //获取对应条目上要显示的内容
            NewsBean newsBean = allNews.get(position);
            //找到控件
            ImageView img_icon=(ImageView) view.findViewById(R.id.img_icon);
            TextView tv_title=(TextView) view.findViewById(R.id.tv_title);
            TextView tv_des=(TextView) view.findViewById(R.id.tv_des);
            //为控件设置要显示的内容
            img_icon.setImageDrawable(newsBean.drawable);
            tv_title.setText(newsBean.title);
            tv_des.setText(newsBean.des);

            return view;
        }

    }


}

1 0
原创粉丝点击