Android实例练习
来源:互联网 发布:3d 打印淘宝 编辑:程序博客网 时间:2024/05/03 20:29
import java.util.ArrayList;
import com.wangnan.todaytopic.adapter.TodayNewsAdapter;
import com.wangnan.todaytopic.entity.ChannelItem;
import com.wangnan.todaytopic.entity.TodayData;
import com.wangnan.todaytopic.entity.TodayNews;
import com.wangnan.todaytopic.tools.ViewDisplayTool;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.support.v4.app.FragmentActivity;
import android.support.v4.view.ViewPager;
import android.util.DisplayMetrics;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.HorizontalScrollView;
import android.widget.ListView;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.RadioGroup.LayoutParams;
public class MainActivity extends FragmentActivity implements OnClickListener{
private ListView listView;
private ArrayList<TodayNews> todayData = new ArrayList<TodayNews>();
private RadioGroup radiogroup;
private HorizontalScrollView scollview;
private ArrayList<ChannelItem> defaultChannels;
private LayoutInflater inflater;
private DisplayMetrics dm;
private ViewPager viewPager;
private ArrayList<Integer> images;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_layout);
//listView=(ListView)findViewById(R.id.mylist);
listView=(ListView)findViewById(R.id.listview);
radiogroup =(RadioGroup)findViewById(R.id.topcategoryscroll_news_item);
initChannelData();
initTab();
//取得scollview的值,然后在滚动条自定义滚动时使用
scollview=(HorizontalScrollView)findViewById(R.id.topcategoryscroll);
//获取viewPager
viewPager= (ViewPager)findViewById(R.id.view_pager);
TodayData data = new TodayData();
data.initData(todayData);
TodayNewsAdapter adapter = new TodayNewsAdapter(this,todayData );
listView.setAdapter(adapter);
/*initTodayData();
TodayNewsAdapter adapter = new TodayNewsAdapter(this,todayData );
listView.setAdapter(adapter);*/
findViewById(R.id.top_head).setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.top_head:
Intent intent = new Intent(this,FragmentActivity.class);
startActivity(intent);
break;
default:
break;
}
}
private void initTab(){
//获取频宽,然后一次显示5个(方法一)
/*dm =new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
int screen=dm.widthPixels/5;*/
//方法二 调用工具类中的方法
int screen =ViewDisplayTool.getWidth(this)/5;
//得到选取的值的总数
int len=defaultChannels.size();
//在本layout中获取资源,把xml文件中的东西转换出来,更好取
inflater=LayoutInflater.from(this);
for(int i=0;i<len;i++){
ChannelItem item=defaultChannels.get(i);
RadioButton rb=(RadioButton)inflater.inflate(R.layout.channel_radio_btn, null);
//使用索引做id号
rb.setId(i);
rb.setText(item.getChannelName());
//把数据放在控件里,从中选取数据
rb.setTag(item);
if(item.isChecked()){
rb.setChecked(true);
}
//布局参数,指对应的layout文件的属性
LayoutParams params=new LayoutParams(screen,LayoutParams.WRAP_CONTENT);
params.leftMargin=5;
params.rightMargin=5;
rb.setPadding(5, 5, 5, 5);
radiogroup.addView(rb,i,params);
}
}
//自定义类型栏目
private void initChannelData(){
defaultChannels= new ArrayList<ChannelItem>();
defaultChannels.add(new ChannelItem(1,"推荐",1,1,true));
defaultChannels.add(new ChannelItem(2,"娱乐",2,1,false));
defaultChannels.add(new ChannelItem(3,"科技",3,1,false));
defaultChannels.add(new ChannelItem(4,"时尚",4,1,false));
defaultChannels.add(new ChannelItem(5,"搞笑",5,1,false));
defaultChannels.add(new ChannelItem(6,"汽车",6,1,false));
defaultChannels.add(new ChannelItem(7,"文化",7,1,false));
defaultChannels.add(new ChannelItem(8,"段子",8,1,false));
defaultChannels.add(new ChannelItem(9,"正能量",9,1,false));
defaultChannels.add(new ChannelItem(10,"休闲",10,1,false));
}
}
2 TodayAdapter.java的写法。(未涉及数据库知识)
import java.util.ArrayList;
import com.wangnan.todaytopic.R;
import com.wangnan.todaytopic.entity.TodayNews;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
public class TodayNewsAdapter extends BaseAdapter {
private ArrayList<TodayNews> mlist;
private Context mcontex;
public TodayNewsAdapter(Context context, ArrayList<TodayNews> mlist) {
super();
this.mlist = mlist;
this.mcontex=context;
}
@Override
public int getCount() {
return this.mlist==null?0:this.mlist.size();
}
@Override
public TodayNews getItem(int position) {
return this.mlist.get(position);
}
@Override
public long getItemId(int arg0) {
return arg0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder =null;
if(convertView==null){
LayoutInflater inflater =LayoutInflater.from(this.mcontex);
convertView = inflater.inflate(R.layout.list_item, null);
holder = new ViewHolder();
holder.right_image=(ImageView)convertView.findViewById(R.id.right_image);
//holder.ic_video=(ImageView)convertView.findViewById(R.id.ic_video);
holder.item_title=(TextView)convertView.findViewById(R.id.item_title);
holder.item_source=(TextView)convertView.findViewById(R.id.item_source);
holder.list_item_local=(TextView)convertView.findViewById(R.id.list_item_local);
holder.comment_count=(TextView)convertView.findViewById(R.id.comment_count);
holder.publish_time=(TextView)convertView.findViewById(R.id.publish_time);
//holder.popicon=(ImageView)convertView.findViewById(R.id.popicon);
//holder.item_abstract=(TextView)convertView.findViewById(R.id.item_abstract);
holder.item_image_0=(ImageView)convertView.findViewById(R.id.item_image_0);
holder.item_image_1=(ImageView)convertView.findViewById(R.id.item_image_1);
holder.item_image_2=(ImageView)convertView.findViewById(R.id.item_image_2);
holder.large_image=(ImageView)convertView.findViewById(R.id.large_image);
holder.alt_mark=(ImageView)convertView.findViewById(R.id.alt_mark);
//holder.comment_content=(TextView)convertView.findViewById(R.id.comment_content);
//holder.comment_arrow=(ImageView)convertView.findViewById(R.id.comment_arrow);
//holder.list_item_favorite_delete=(TextView)convertView.findViewById(R.id.list_item_favorite_delete);
convertView.setTag(holder);
}else{
holder =(ViewHolder)convertView.getTag();
}
final TodayNews todaynews=this.mlist.get(position);
holder.item_title.setText(todaynews.getTilte());
holder.item_source.setText(todaynews.getSource());
//holder.list_item_local.setText();
holder.comment_count.setText("评论"+todaynews.getCommentCount());
holder.publish_time.setText(todaynews.getPubDateTime());
//holder.item_abstract.setText();
//holder.comment_content.setText();
//holder.list_item_favorite_delete.setText();
ArrayList<Integer> images=todaynews.getImages();
if(images!=null && images.size()!=0){
if(images.size()==1){
if(todaynews.isLarge()){
holder.large_image.setVisibility(View.VISIBLE);
holder.large_image.setImageResource(images.get(0));
holder.right_image.setVisibility(View.GONE);
holder.item_image_0.setVisibility(View.GONE);
holder.item_image_1.setVisibility(View.GONE);
holder.item_image_2.setVisibility(View.GONE);
}else{
holder.right_image.setVisibility(View.VISIBLE);
holder.right_image.setImageResource(images.get(0));
holder.large_image.setVisibility(View.GONE);
holder.item_image_0.setVisibility(View.GONE);
holder.item_image_1.setVisibility(View.GONE);
holder.item_image_2.setVisibility(View.GONE);
}
}else{
holder.right_image.setVisibility(View.GONE);
holder.large_image.setVisibility(View.GONE);
holder.item_image_0.setImageResource(images.get(0));
holder.item_image_1.setImageResource(images.get(1));
holder.item_image_2.setImageResource(images.get(2));
}
}else{
//只有标题
holder.right_image.setVisibility(View.GONE);
holder.large_image.setVisibility(View.GONE);
holder.item_image_0.setVisibility(View.GONE);
holder.item_image_1.setVisibility(View.GONE);
holder.item_image_2.setVisibility(View.GONE);
}
if(todaynews.getSpecialTag()!=null){
holder.list_item_local.setVisibility(View.VISIBLE);
holder.list_item_local.setText(todaynews.getSpecialTag());
}else{
holder.list_item_local.setVisibility(View.GONE);
}
if(todaynews.getMark()!=-1){
if(todaynews.getMark()==0){
holder.alt_mark.setVisibility(View.VISIBLE);
holder.alt_mark.setImageResource(R.drawable.ic_mark_exclusive);
}else if(todaynews.getMark()==1){
holder.alt_mark.setVisibility(View.VISIBLE);
holder.alt_mark.setImageResource(R.drawable.ic_mark_favor);
}else if(todaynews.getMark()==2){
holder.alt_mark.setVisibility(View.VISIBLE);
holder.alt_mark.setImageResource(R.drawable.ic_mark_first);
}else if(todaynews.getMark()==3){
holder.alt_mark.setVisibility(View.VISIBLE);
holder.alt_mark.setImageResource(R.drawable.ic_mark_hot);
}else if(todaynews.getMark()==4){
holder.alt_mark.setVisibility(View.VISIBLE);
holder.alt_mark.setImageResource(R.drawable.ic_mark_recommend);
}
}
return convertView;
}
public static class ViewHolder {
// 右边图片
ImageView right_image;
ImageView ic_video;
// 文章标题
TextView item_title;
// 来源
TextView item_source;
// 推广之类的标签
TextView list_item_local;
// 评论数量
TextView comment_count;
// 发布时间
TextView publish_time;
//pop按钮
ImageView popicon;
// 新闻摘要
TextView item_abstract;
// 3张图片时候的布局
LinearLayout item_image_layout;
ImageView item_image_0;
ImageView item_image_1;
ImageView item_image_2;
//大图
ImageView large_image;
// 右上方TAG标记图片
ImageView alt_mark;
TextView comment_content;
ImageView comment_arrow;
TextView list_item_favorite_delete;
}
}
3 TodayData.java
import java.util.ArrayList;
import com.wangnan.todaytopic.R;
public class TodayData {
private ArrayList<Integer> images;
private ArrayList<TodayNews> todayData = new ArrayList<TodayNews>();
public void initData(ArrayList<TodayNews> todayData){
//不显示图片的,仅仅是标题
TodayNews today = new TodayNews();
today.setTilte("中泰暂停“大米换高铁”计划 寻找其他方案");
today.setSource("当代商报网");
today.setCommentCount(516);
today.setPubDateTime("21分钟前");
today.setMark(0);
today.setSpecialTag("头条");
todayData.add(today);
//有标题和右边图片的
today= new TodayNews();
images=new ArrayList<Integer>();
today.setTilte("巫启贤不玩不玩冰桶改验毒 点名吸毒女星同门");
images.add(R.drawable.ic_launcher);
today.setImages(images);
today.setSource("中时电子报");
today.setCommentCount(186);
today.setPubDateTime("08-29 21:09");
today.setSpecialTag("推荐");
today.setMark(3);
todayData.add(today);
//显示标题及三张图片
today= new TodayNews();
images=new ArrayList<Integer>();
today.setTilte("蒸面条的做法大全");
today.setSource("豆果美食");
today.setCommentCount(15);
today.setPubDateTime("08-12 01:12");
images.add(R.drawable.grossini_dance_04);
images.add(R.drawable.grossini_dance_06);
images.add(R.drawable.grossini_dance_08);
today.setImages(images);
today.setMark(4);
todayData.add(today);
//显示标题和大图片,有特殊标签
today= new TodayNews();
images=new ArrayList<Integer>();
today.setTilte("《家有儿女》刘星死党键盘逆袭!");
today.setSource("87网络IT男");
//today.setSpecialTag();
today.setCommentCount(1031);
today.setPubDateTime("4小时前");
today.setLarge(true);
images.add(R.drawable.ic_launcher);
today.setImages(images);
todayData.add(today);
today= new TodayNews();
images=new ArrayList<Integer>();
today.setTilte("华为中国区总裁朱平:海思处理器不是标配");
today.setSource("手机凤凰网");
today.setCommentCount(1031);
today.setPubDateTime("07-23");
today.setSpecialTag("热门");
today.setMark(2);
today.setLarge(true);
images.add(R.drawable.logo);
today.setImages(images);
todayData.add(today);
today= new TodayNews();
images=new ArrayList<Integer>();
today.setTilte("吴镇宇领衔,靠人格魅力走红的10大明星");
today.setSource("头条专题");
//today.setSpecialTag();
today.setCommentCount(3231);
today.setPubDateTime("05-11");
today.setMark(1);
today.setLarge(false);
images.add(R.drawable.grossini_dance_07);
today.setImages(images);
todayData.add(today);
}
}
- Android实例练习
- Android进度条简单练习实例
- Android练习-----实例应用:设计用户注册界面
- URL实例练习收集
- VSS实例练习
- Boost::regex练习实例
- SMARTFORM 实例练习
- 浮动综合实例练习
- awk实例练习
- sed简单实例练习
- MJRefresh实例练习
- Python 练习实例1
- Python 练习实例2
- Python 练习实例3
- Python 练习实例4
- Python 练习实例5
- Python 练习实例6
- Python 练习实例7
- Linux下使用Vim进行C/C++ 编程基础知识详解
- 代理模式深入(二)——动态代理实现机制
- hdu 1166
- java反射机制剖析(一)—简介
- Linux企业级项目实践之网络爬虫(13)——处理user-agent
- Android实例练习
- lunix shell 基础常用整理
- 使用MethodInvoker委托进行跨线程访问
- java反射机制剖析(二)— Class Loader
- Valid Palindrome
- Android中创建简单的视图分隔符
- SQL自然联接(NATURAL JOIN)
- CODE平台开通IRC聊天频道了!
- 通过Stack Overflow分析编程语言大势