Android实例练习

来源:互联网 发布:3d 打印淘宝 编辑:程序博客网 时间:2024/05/03 20:29
1.MainActivity.java

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

            }
}



0 0
原创粉丝点击