public class HomeFragment extends Fragment {
private Context context;
private View convertView;
private GridView gridview;
private ListView listView;
private HomeListAdapter homeListAdapter;
private HomeFourGridsAdapter fourGridsAdapter;
private ViewPager viewPager;
private int currentItem;
private int[] imageResId;
private ScheduledExecutorService scheduledExecutorService;
private List<ImageView> imageViews;
private String[] titles;
private List<View> dots;
protected final static int INIT_NEWS_IMGS = 101;
protected final static int INIT_NEWS_LIST = 102;
protected final static int INIT_NEWS_BTNS = 103;
private TextView tv_title;
public HomeFragment() {
}
public HomeFragment(Context context) {
this.context = context;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 设置Fragment不重建
setRetainInstance(true);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
currentItem = 0;
convertView = inflater.inflate(R.layout.fragment_home, null);
initNewsList();
initImgBtns();
initNewsViewPage();
return convertView;
}
@Override
public void onStart() {
scheduledExecutorService = Executors.newSingleThreadScheduledExecutor();
scheduledExecutorService.scheduleAtFixedRate(new ScrollTask(), 3, 3,
TimeUnit.SECONDS);
super.onStart();
}
@Override
public void onStop() {
scheduledExecutorService.shutdown();
super.onStop();
}
// 初始化滑动图片
private void initNewsViewPage() {
imageResId = new int[] { R.drawable.gallery_photo_1,
R.drawable.gallery_photo_3, R.drawable.gallery_photo_4,
R.drawable.gallery_photo_8, R.drawable.gallery_photo_3 };
titles = new String[imageResId.length];
titles[0] = "11111";
titles[1] = "22222";
titles[2] = "33333";
titles[3] = "44444";
titles[4] = "55555";
imageViews = new ArrayList<ImageView>();
for (int i = 0; i < imageResId.length; i++) {
ImageView imageView = new ImageView(this.context);
imageView.setImageResource(imageResId[i]);
imageView.setScaleType(ScaleType.CENTER_CROP);
imageViews.add(imageView);
}
dots = new ArrayList<View>();
dots.add(convertView.findViewById(R.id.v_dot0));
dots.add(convertView.findViewById(R.id.v_dot1));
dots.add(convertView.findViewById(R.id.v_dot2));
dots.add(convertView.findViewById(R.id.v_dot3));
dots.add(convertView.findViewById(R.id.v_dot4));
tv_title = (TextView) convertView.findViewById(R.id.tv_title);
tv_title.setText(titles[0]);
viewPager = (ViewPager) convertView.findViewById(R.id.vp);
viewPager.setAdapter(new HomeNewsViewPaperAdapter(imageResId,
imageViews));
viewPager.setOnPageChangeListener(new NewsViewPageChangeListener());
}
// 初始化新闻列表
private void initNewsList() {
listView = (ListView) convertView.findViewById(R.id.home_news_listview);
homeListAdapter = new HomeListAdapter(this.context, new int[] {
drawable.app_logo, drawable.app_logo }, new String[] { "1111",
"1111" }, new String[] { "2222", "2222" });
Message message = handler.obtainMessage();
message.what = this.INIT_NEWS_LIST;
handler2.handleMessage(message);
}
// 初始化首页的四个按钮
private void initImgBtns() {
gridview = (GridView) convertView.findViewById(R.id.home_grilView);
fourGridsAdapter = new HomeFourGridsAdapter(this.context, new int[] {
drawable.app_logo, drawable.app_logo, drawable.app_logo,
drawable.app_logo });
Message message = handler.obtainMessage();
message.what = this.INIT_NEWS_BTNS;
handler2.handleMessage(message);
}
private Handler handler = new Handler() {
public void handleMessage(android.os.Message msg) {
viewPager.setCurrentItem(currentItem);
};
};
private Handler handler2 = new Handler() {
public void handleMessage(Message msg) {
switch (msg.what) {
case HomeFragment.INIT_NEWS_LIST:
listView.setAdapter(homeListAdapter);
homeListAdapter.notifyDataSetChanged();
break;
case HomeFragment.INIT_NEWS_BTNS:
gridview.setAdapter(fourGridsAdapter);
fourGridsAdapter.notifyDataSetChanged();
break;
}
};
};
// 图片滚动线程
private class ScrollTask implements Runnable {
public void run() {
synchronized (viewPager) {
currentItem = (currentItem + 1) % imageViews.size();
handler.obtainMessage().sendToTarget();
}
}
}
// 监听触摸滑动图片
private class NewsViewPageChangeListener implements OnPageChangeListener,
OnClickListener {
private int oldPosition = 0;
public void onPageSelected(int position) {
currentItem = position;
tv_title.setText(titles[position]);
dots.get(oldPosition).setBackgroundResource(R.drawable.dot_normal);
dots.get(position).setBackgroundResource(R.drawable.dot_focused);
oldPosition = position;
}
public void onPageScrollStateChanged(int arg0) {
}
public void onPageScrolled(int arg0, float arg1, int arg2) {
}
@Override
public void onClick(View v) {
// 跳转
}
}
}
public class HomeListAdapter extends BaseAdapter {
Context context;
int[] imgs;
String[] titles;
String[] contents;
int count;
public HomeListAdapter(Context context, int[] imgs, String[] titles,
String[] contents) {
this.context = context;
this.imgs = imgs;
this.titles = titles;
this.contents = contents;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return count;
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return null;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
Log.e("", "listView");
ViewHolder holder;
if (convertView == null) {
convertView = LayoutInflater.from(this.context).inflate(
R.layout.item_home_newslist, null);
holder = new ViewHolder();
holder.imgView = (ImageView) convertView.findViewById(R.id.row_img);
holder.title = (TextView) convertView.findViewById(R.id.row_title);
holder.content = (TextView) convertView
.findViewById(R.id.row_content);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.imgView.setBackgroundColor(imgs[position]);
holder.title.setText(titles[position]);
holder.content.setText(contents[position]);
return convertView;
}
private class ViewHolder {
TextView title;
TextView content;
ImageView imgView;
}
}
下面还有一个列表的,但是没加载.....
第一次用Fragment,我如果不用ListFragment能不能加载ListView,还有我不知道为什么加载不了,怎么写都不加载,而且没有异常,调试Adapter,也不跳进getView里面.