标签:
package com.liupan.mydemo.widget;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
import com.google.gson.Gson;
import com.liupan.mydemo.R;
import com.liupan.mydemo.json.CourseList;
import android.content.Context;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;
/**
 * 描述:显示课程表控件的类
 * @author 
 *
 */
public class ScheduleLayout extends RelativeLayout{
	private static final String DEBUG = "DEBUG";
	private Context context ;
	/**
	 * 课程表的页数
	 */
	int pagerNumber;
	/**
	 * 存放所有课程数据的集合
	 */
	private ArrayList<CourseList> Course_data;
	public ScheduleLayout(Context context) {
		super(context);
		this.context=context;
		//初始化数据
		initData();
		//初始化控件
		//initView();
}
	/**
	 * 描述:初始化控件
	 */
	private void initView( ) {
		LinearLayout inflate = (LinearLayout) View.inflate(context, R.layout.schedule, this);
		//显示课程列表的ViewPager
		ViewPager schedule_vpr = (ViewPager) inflate.findViewById(R.id.schedule_vpr);
		//显示时间刻度LinearLayout
		LinearLayout time_day = (LinearLayout) findViewById(R.id.time_day);
		//初始化时间刻度
		initTimeList(time_day);
		//初始化课程列表
		initCourseList();
		schedule_vpr.setAdapter(new MyAdapter());
}
	/**
	 * 描述:初始化课程列表的控件
	 *       每个ViewPager
	 */
	private void initCourseList() {
		//创建每周的数据容器
		for (int i = 0; i <pagerNumber; i++) {
			LinearLayout week_llt = new LinearLayout(context);
			week_llt.setOrientation(LinearLayout.HORIZONTAL);
			//获取每周对应的天数
			int size = Course_data.get(i).week.size();
			Log.d(DEBUG,"第"+i+"周的上课天数是:"+size);
			//创建每天的数据容器
			for (int j = 0; 0<size; j++) {
				LinearLayout day_llt = new LinearLayout(context);
				day_llt.setOrientation(LinearLayout.VERTICAL);
				//5个LinearLayout水平布局,每个权重为1
				LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(0,
						LayoutParams.MATCH_PARENT, 1);
				day_llt.setLayoutParams(params );
				week_llt.addView(day_llt);
				 Course_data.get(i).week.get(i).monday.size();
				/*for (int k = 0; k < array.length; k++) {
					
				}*/
			}
		}
}
	/**
	 * 描述:初始化时间列表控件
	 *       从9:00开始到24:00
	 * @param llt 显示时间列表的控件
	 */
	private void initTimeList(LinearLayout llt) {
		for (int i = 9; i <= 24; i++) {
			TextView textView = new TextView(context);
			LinearLayout.LayoutParams params=new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT,
					LayoutParams.WRAP_CONTENT,1);
			textView.setLayoutParams(params);
			textView.setText(i+":00");
			llt.addView(textView);
		}
	}
	/**
	 * 
	 */
	private void initData() {
		try {
			Properties pro = new Properties();
			InputStream in = context.getAssets().open("courselistpager.properties");
			pro.load(in);
			//从配置文件当中获取课程表的页数
			String pagerNumber = pro.getProperty("pagerNumber","3");
			this.pagerNumber = Integer.parseInt(pagerNumber);
			Log.d(DEBUG,"pagerNumber"+pagerNumber);
			Toast.makeText(context, "pagerNumber"+pagerNumber, 1).show();
		} catch (IOException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}
		try {
			Course_data = new ArrayList<CourseList>();
			for (int i = 1; i <= this.pagerNumber; i++) {
				InputStream open = context.getAssets().open("week_"+i+".json");
				byte[] buffer=new byte[open.available()];
				open.read(buffer);
				String gson_data = new String(buffer,"GBK");
				Gson gson =new Gson();
				CourseList fromJson = gson.fromJson(gson_data, CourseList.class);
				Course_data.add(fromJson);			
				Log.d(DEBUG," fromJson.week.size()"+ fromJson.week.size());
				Log.d(DEBUG," fromJson.week.get(0).monday.get(0).time"+ fromJson.week.get(0).monday.get(0).time);
			}		
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	/**
	 * 描述:课程表ViewPager的适配器
	 * @author Administrator
	 *
	 */
	private class MyAdapter extends PagerAdapter {
		@Override
		public int getCount() {
			// TODO Auto-generated method stub
			return pagerNumber;
		}
		@Override
		public boolean isViewFromObject(View arg0, Object arg1) {
			// TODO Auto-generated method stub
			return arg0==arg1;
		}
		@Override
		public void destroyItem(ViewGroup container, int position, Object object) {
			// TODO Auto-generated method stub
			super.destroyItem(container, position, object);
		}
		@Override
		public Object instantiateItem(ViewGroup container, int position) {
			// TODO Auto-generated method stub
			return super.instantiateItem(container, position);
		}
}
}
package com.liupan.mydemo.widgetTestActivity;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
import com.google.gson.Gson;
import com.liupan.mydemo.json.CourseList;
import com.liupan.mydemo.widget.ScheduleLayout;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
public class ScheduleTestActivity extends Activity{
String DEBUG="debug";
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);	
		ScheduleLayout scheduleLayout = new ScheduleLayout(this);
		setContentView(scheduleLayout);
	}
}
package com.liupan.mydemo.json;
import java.util.List;
public class CourseList {
public List<Week> week;
public class Week{
	public List<Lesson> monday;
	public List<Lesson> tursday;
	public List<Lesson> wednsday;
	public List<Lesson> thursday;
	public List<Lesson> friday;
}
public class Lesson{
	public String course;
	public String teatch;
	public String time;
}
}
{"week":[{"monday":[{"course":"香蕉分析1","time":"09:00-10:00","teatch":"白老师"},{"course":"项目分析","time":"10:30-12:00","teatch":"张老师"},{"course":"苹果分析","time":"15:00-17:00","teatch":"李老师"},{"course":"项目分析","time":"18:00-19:30","teatch":"白老师"}]},{"tursday":[{"course":"香蕉分析","time":"09:00-10:00","teatch":"白老师"},{"course":"项目分析","time":"10:30-12:00","teatch":"张老师"},{"course":"苹果分析","time":"15:00-17:00","teatch":"李老师"},{"course":"项目分析","time":"18:00-19:30","teatch":"白老师"}]},{"wednsday":[{"course":"香蕉分析","time":"09:00-10:00","teatch":"白老师"},{"course":"项目分析","time":"10:30-12:00","teatch":"张老师"},{"course":"苹果分析","time":"15:00-17:00","teatch":"李老师"},{"course":"项目分析","time":"18:00-19:30","teatch":"白老师"}]},{"thursday":[{"course":"香蕉分析","time":"09:00-10:00","teatch":"白老师"},{"course":"项目分析","time":"10:30-12:00","teatch":"张老师"},{"course":"苹果分析","time":"15:00-17:00","teatch":"李老师"},{"course":"项目分析","time":"18:00-19:30","teatch":"白老师"}]},{"friday":[{"course":"香蕉分析","time":"09:00-10:00","teatch":"白老师"},{"course":"项目分析","time":"10:30-12:00","teatch":"张老师"},{"course":"苹果分析","time":"15:00-17:00","teatch":"李老师"},{"course":"项目分析","time":"18:00-19:30","teatch":"白老师"}]}]}
{"week":[{"monday":[{"course":"香蕉分析2","time":"09:10-10:00","teatch":"白老师"},{"course":"项目分析","time":"10:30-12:00","teatch":"张老师"},{"course":"苹果分析","time":"15:00-17:00","teatch":"李老师"},{"course":"项目分析","time":"18:00-19:30","teatch":"白老师"}]},{"tursday":[{"course":"香蕉分析","time":"09:00-10:00","teatch":"白老师"},{"course":"项目分析","time":"10:30-12:00","teatch":"张老师"},{"course":"苹果分析","time":"15:00-17:00","teatch":"李老师"},{"course":"项目分析","time":"18:00-19:30","teatch":"白老师"}]},{"wednsday":[{"course":"香蕉分析","time":"09:00-10:00","teatch":"白老师"},{"course":"项目分析","time":"10:30-12:00","teatch":"张老师"},{"course":"苹果分析","time":"15:00-17:00","teatch":"李老师"},{"course":"项目分析","time":"18:00-19:30","teatch":"白老师"}]},{"thursday":[{"course":"香蕉分析","time":"09:00-10:00","teatch":"白老师"},{"course":"项目分析","time":"10:30-12:00","teatch":"张老师"},{"course":"苹果分析","time":"15:00-17:00","teatch":"李老师"},{"course":"项目分析","time":"18:00-19:30","teatch":"白老师"}]},{"friday":[{"course":"香蕉分析","time":"09:00-10:00","teatch":"白老师"},{"course":"项目分析","time":"10:30-12:00","teatch":"张老师"},{"course":"苹果分析","time":"15:00-17:00","teatch":"李老师"},{"course":"项目分析","time":"18:00-19:30","teatch":"白老师"}]
{"week":[{"monday":[{"course":"香蕉分析3","time":"09:20-10:00","teatch":"白老师"},{"course":"项目分析","time":"10:30-12:00","teatch":"张老师"},{"course":"苹果分析","time":"15:00-17:00","teatch":"李老师"},{"course":"项目分析","time":"18:00-19:30","teatch":"白老师"}]},{"tursday":[{"course":"香蕉分析","time":"09:00-10:00","teatch":"白老师"},{"course":"项目分析","time":"10:30-12:00","teatch":"张老师"},{"course":"苹果分析","time":"15:00-17:00","teatch":"李老师"},{"course":"项目分析","time":"18:00-19:30","teatch":"白老师"}]},{"wednsday":[{"course":"香蕉分析","time":"09:00-10:00","teatch":"白老师"},{"course":"项目分析","time":"10:30-12:00","teatch":"张老师"},{"course":"苹果分析","time":"15:00-17:00","teatch":"李老师"},{"course":"项目分析","time":"18:00-19:30","teatch":"白老师"}]},{"thursday":[{"course":"香蕉分析","time":"09:00-10:00","teatch":"白老师"},{"course":"项目分析","time":"10:30-12:00","teatch":"张老师"},{"course":"苹果分析","time":"15:00-17:00","teatch":"李老师"},{"course":"项目分析","time":"18:00-19:30","teatch":"白老师"}]},{"friday":[{"course":"香蕉分析","time":"09:00-10:00","teatch":"白老师"},{"course":"项目分析","time":"10:30-12:00","teatch":"张老师"},{"course":"苹果分析","time":"15:00-17:00","teatch":"李老师"},{"course":"项目分析","time":"18:00-19:30","teatch":"白老师"}]}]}
{"week":[{"monday":[{"course":"香蕉分析4","time":"09:30-10:00","teatch":"白老师"},{"course":"项目分析","time":"10:30-12:00","teatch":"张老师"},{"course":"苹果分析","time":"15:00-17:00","teatch":"李老师"},{"course":"项目分析","time":"18:00-19:30","teatch":"白老师"}]},{"tursday":[{"course":"香蕉分析","time":"09:00-10:00","teatch":"白老师"},{"course":"项目分析","time":"10:30-12:00","teatch":"张老师"},{"course":"苹果分析","time":"15:00-17:00","teatch":"李老师"},{"course":"项目分析","time":"18:00-19:30","teatch":"白老师"}]},{"wednsday":[{"course":"香蕉分析","time":"09:00-10:00","teatch":"白老师"},{"course":"项目分析","time":"10:30-12:00","teatch":"张老师"},{"course":"苹果分析","time":"15:00-17:00","teatch":"李老师"},{"course":"项目分析","time":"18:00-19:30","teatch":"白老师"}]},{"thursday":[{"course":"香蕉分析","time":"09:00-10:00","teatch":"白老师"},{"course":"项目分析","time":"10:30-12:00","teatch":"张老师"},{"course":"苹果分析","time":"15:00-17:00","teatch":"李老师"},{"course":"项目分析","time":"18:00-19:30","teatch":"白老师"}]},{"friday":[{"course":"香蕉分析","time":"09:00-10:00","teatch":"白老师"},{"course":"项目分析","time":"10:30-12:00","teatch":"张老师"},{"course":"苹果分析","time":"15:00-17:00","teatch":"李老师"},{"course":"项目分析","time":"18:00-19:30","teatch":"白老师"}]}]}
courselistpager.properties:pagerNumber=4
finished.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle">
    <size android:width="40dp" android:height="10dp"/>
    <solid android:color="#ffcccc"/>
</shape>
unfinished.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle">
    <size android:width="40dp" android:height="10dp"/>
    <solid android:color="#000000"/>
</shape>
schedule.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
<!-- 标题栏 -->
    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:background="#cccccc" >
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerVertical="true"
            android:text="课程表"
            android:textColor="#000000"
            android:textSize="23sp" />
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_centerVertical="true"
            android:layout_marginRight="180dp"
            android:drawableLeft="@drawable/finished"
            android:drawablePadding="5dp"
            android:text="完成"
            android:textColor="#000000"
            android:textSize="18sp" />
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_centerVertical="true"
            android:layout_marginRight="20dp"
            android:drawableLeft="@drawable/unfinished"
            android:drawablePadding="5dp"
            android:text="未完成"
            android:textColor="#000000"
            android:textSize="18sp" />
    </RelativeLayout>
<!-- 星期栏 -->
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="0.7"
        android:background="#ff0000"
        android:orientation="horizontal" >
        <TextView
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:background="#ff00ff"
            android:gravity="center"
            android:text="时间"
            android:textSize="18sp" />
        <TextView
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="3"
            android:background="#00cc00"
            android:gravity="center"
            android:text="星期一"
            android:textSize="18sp" />
        <TextView
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="3"
            android:background="#88cccc"
            android:gravity="center"
            android:text="星期二"
            android:textSize="18sp" />
        <TextView
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="3"
            android:background="#00cc00"
            android:gravity="center"
            android:text="星期三"
            android:textSize="18sp" />
        <TextView
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="3"
            android:background="#88cccc"
            android:gravity="center"
            android:text="星期四"
            android:textSize="18sp" />
        <TextView
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="3"
            android:background="#00cc00"
            android:gravity="center"
            android:text="星期五"
            android:textSize="18sp" />
    </LinearLayout>
<!-- 时间刻度栏和课程列表栏 ,上下滑动 -->
    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="9" >
<!-- 时间刻度栏和课程栏 ,水平布局 -->
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal" >
<!-- 时间刻度栏,垂直布局 -->
            <LinearLayout
                android:id="@+id/time_day"
                android:layout_width="0dp"
                android:layout_height="600dp"
                android:layout_weight="1"
                android:orientation="vertical" />
<!-- 课程栏的ViewPager -->
            <android.support.v4.view.ViewPager
                android:id="@+id/schedule_vpr"
                android:layout_width="0dp"
                android:layout_height="600dp"
                android:layout_weight="15"
                android:background="#0000ff" >
            </android.support.v4.view.ViewPager>
        </LinearLayout>
    </ScrollView>
</LinearLayout>
标签:
原文地址:http://www.cnblogs.com/a454892215/p/4397211.html