2015.10.21(第五天)
目标:采用ListView实现列表
前言:整个实现的过程是视图+控制器+数据填充
视图通:过ListView控件来实现,以列表的形式显示数据。
控制器:通过Adapter来实现,一共有四种:ArrayAdapter、SimpleAdapter、自定义Adapter、SimpleCursorAdapter。把数据源中的数据以某种样式(xml文件)显示在视图中。
数据:1.声明视图对象,根据id找到此对象;2声明控制器对象,根据构造方法实例化此对象;3.绑定Adapter对象到Adapter上。
详细链接:http://blog.csdn.net/lizzywu/article/details/17612789
第一步:在xml中添加ListView控件。
<ListView
android:id="@+id/list_home"
android:layout_below="@id/relativeLayout1"
android:layout_width="match_parent"
android:layout_height="match_content"
>
</ListView>
这样就为ListView控件指定了一个id,然后将宽度和高度都设置为match_parent,这样ListView也就占据了整个布局的空间。其中,
android:layout_below="@id/relativeLayout1"
这一句,可以将ListView的布局放置在标题layout的下面。
第二步:新建一个数据类来存储数据
新建Note.class
package com.hust.xiaomi;
public class Note {
String title;
String content;
public Note(String title, String content) {
// TODO Auto-generated constructor stub
this.title = title;
this.content= content;
}
}
第三步:利用BaseAdapter制作有自己布局的ListView
public class ListViewAdapter extends BaseAdapter {
List<Note> mlistInfo;//新建一个List变量,类型为Note,变量名为mlistInfo
public ListViewAdapter(List<Note> mlistInfo) {
this.mlistInfo = mlistInfo;
}
@Override
public int getCount() {//返回包含的Item的总个数
// TODO Auto-generated method stub
return mlistInfo.size();
}
@Override
public Object getItem(int position) {//获得相应数据集合中特定位置的数据项
// TODO Auto-generated method stub
return mlistInfo.get(position);
}
@Override
public long getItemId(int position) {//返回该position对应item的id adapterview也有类似方法:
// TODO Auto-generated method stub
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {//返回了每个item项所显示的view
// TODO Auto-generated method stub
if (convertView == null) {
LayoutInflater inflater = (LayoutInflater) MainActivity.this
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.list_item_detail, null);
}
Note note = mlistInfo.get(position);
TextView title = (TextView) convertView.findViewById(R.id.title);
title.setText(note.title);
TextView text = (TextView) convertView.findViewById(R.id.info);
text.setText(note.content);
return convertView;
}
}
重写Baseadapter时,我们需要重写四个方法:getCount,getItem(int position),getItemId(int position),getView方法。
getCount:决定了listview一共有多少个item。
getView:返回了每个item项所显示的view。
getItem:getItem方法不是在Baseadapter类中被调用的,而是在Adapterview中被调用的。
结果:
调整布局后:
2015.10.22-2015.10.23(第六天、第七天)
目标:实现第二界面的选择背景功能。
前言:点击图片,利用onClick函数来响应点击图片的过程。
第一步:新建第二个界面的布局文件activity_second.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/secondlayout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/widget_big_green"
android:orientation="vertical" >
<ImageView
android:id="@+id/five"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/image3"
android:layout_centerHorizontal="true"
android:layout_marginTop="29dp"
android:scaleType="fitCenter"
android:src="@drawable/zhengwen_xuanyanse" />
<RelativeLayout
android:id="@+id/relativeLayout11"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@id/five"
android:layout_alignTop="@id/five"
android:orientation="vertical" >
<ImageView
android:id="@+id/five1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:scaleType="fitCenter"
android:src="@drawable/zhengwen_xuanyanse_dangqian" />
</RelativeLayout>
<RelativeLayout
android:id="@+id/relativeLayout22"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/five"
android:layout_toRightOf="@+id/relativeLayout11"
android:orientation="vertical" >
<ImageView
android:id="@+id/five2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:scaleType="fitCenter"
android:src="@drawable/zhengwen_xuanyanse_dangqian" />
</RelativeLayout>
<RelativeLayout
android:id="@+id/relativeLayout33"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/five"
android:layout_toRightOf="@+id/relativeLayout22"
android:orientation="vertical" >
<ImageView
android:id="@+id/five3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:scaleType="fitCenter"
android:src="@drawable/zhengwen_xuanyanse_dangqian" />
</RelativeLayout>
<RelativeLayout
android:id="@+id/relativeLayout44"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/five"
android:layout_toRightOf="@+id/relativeLayout33"
android:orientation="vertical" >
<ImageView
android:id="@+id/five4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:scaleType="fitCenter"
android:src="@drawable/zhengwen_xuanyanse_dangqian" />
</RelativeLayout>
<RelativeLayout
android:id="@+id/relativeLayout55"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/five"
android:layout_toRightOf="@+id/relativeLayout44"
android:orientation="vertical" >
<ImageView
android:id="@+id/five5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:scaleType="fitCenter"
android:src="@drawable/zhengwen_xuanyanse_dangqian" />
</RelativeLayout>
<ImageView
android:id="@+id/image3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_marginTop="18dp"
android:layout_toRightOf="@+id/relativeLayout55"
android:scaleType="fitCenter"
android:src="@drawable/notes_btn_changecolors" />
</RelativeLayout>
class MyClickListener implements View.OnClickListener {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.setClass(MainActivity.this, SecondActivity.class);
startActivity(intent);
}
}
第三步:实现第二个页面的逻辑
package com.hust.xiaomi;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import com.example.xiaomi.R;
public class SecondActivity extends Activity {
private ImageView select = null;
private ImageView five = null;
private ImageView five1 = null;
private ImageView five2 = null;
private ImageView five3 = null;
private ImageView five4 = null;
private ImageView five5 = null;
private RelativeLayout layout = null;
private RelativeLayout relativeLayout1 = null;
private RelativeLayout relativeLayout2 = null;
private RelativeLayout relativeLayout3 = null;
private RelativeLayout relativeLayout4 = null;
private RelativeLayout relativeLayout5 = null;
private boolean isVisible = false;
private boolean isVisible1 = true;
private boolean isVisible2 = true;
private boolean isVisible3 = true;
private boolean isVisible4 = true;
private boolean isVisible5 = true;
private int imageidsSecond[] = { R.drawable.widget_big_yellow,
R.drawable.widget_big_red, R.drawable.widget_big_blue,
R.drawable.widget_big_green, R.drawable.widget_big_gray };
private int flag = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
select = (ImageView) findViewById(R.id.image3);
layout = (RelativeLayout) findViewById(R.id.secondlayout);
five = (ImageView) findViewById(R.id.five);
five1 = (ImageView) findViewById(R.id.five1);
five2 = (ImageView) findViewById(R.id.five2);
five3 = (ImageView) findViewById(R.id.five3);
five4 = (ImageView) findViewById(R.id.five4);
five5 = (ImageView) findViewById(R.id.five5);
relativeLayout1 = (RelativeLayout) findViewById(R.id.relativeLayout11);
relativeLayout2 = (RelativeLayout) findViewById(R.id.relativeLayout22);
relativeLayout3 = (RelativeLayout) findViewById(R.id.relativeLayout33);
relativeLayout4 = (RelativeLayout) findViewById(R.id.relativeLayout44);
relativeLayout5 = (RelativeLayout) findViewById(R.id.relativeLayout55);
five1.setVisibility(View.INVISIBLE);
five2.setVisibility(View.INVISIBLE);
five3.setVisibility(View.INVISIBLE);
five4.setVisibility(View.INVISIBLE);
five5.setVisibility(View.INVISIBLE);
five.setVisibility(View.INVISIBLE);
select.setOnClickListener(new MyClickListener());
relativeLayout1.setOnClickListener(new MyClickListener1());
relativeLayout2.setOnClickListener(new MyClickListener2());
relativeLayout3.setOnClickListener(new MyClickListener3());
relativeLayout4.setOnClickListener(new MyClickListener4());
relativeLayout5.setOnClickListener(new MyClickListener5());
}
class MyClickListener implements View.OnClickListener {
@Override
public void onClick(View v) {
if (isVisible) {
five.setVisibility(View.INVISIBLE);
five1.setVisibility(View.INVISIBLE);
five2.setVisibility(View.INVISIBLE);
five3.setVisibility(View.INVISIBLE);
five4.setVisibility(View.INVISIBLE);
five5.setVisibility(View.INVISIBLE);
isVisible = false;
} else {
five.setVisibility(View.VISIBLE);
switch (flag) {
case 1:
five1.setVisibility(View.VISIBLE);
break;
case 2:
five2.setVisibility(View.VISIBLE);
break;
case 3:
five3.setVisibility(View.VISIBLE);
break;
case 4:
five4.setVisibility(View.VISIBLE);
break;
case 5:
five5.setVisibility(View.VISIBLE);
break;
}
isVisible = true;
}
}
}
class MyClickListener1 implements View.OnClickListener {
@Override
public void onClick(View v) {
flag = 1;
layout.setBackgroundResource(imageidsSecond[flag - 1]);
five.setVisibility(View.INVISIBLE);
five1.setVisibility(View.INVISIBLE);
five2.setVisibility(View.INVISIBLE);
five3.setVisibility(View.INVISIBLE);
five4.setVisibility(View.INVISIBLE);
five5.setVisibility(View.INVISIBLE);
isVisible = false;
if (isVisible) {
if (isVisible1) {
five1.setVisibility(View.INVISIBLE);
isVisible1 = false;
} else {
// five1.setVisibility(View.VISIBLE);
isVisible1 = true;
}
}
}
}
class MyClickListener2 implements View.OnClickListener {
@Override
public void onClick(View v) {
flag = 2;
layout.setBackgroundResource(imageidsSecond[flag - 1]);
five.setVisibility(View.INVISIBLE);
five1.setVisibility(View.INVISIBLE);
five2.setVisibility(View.INVISIBLE);
five3.setVisibility(View.INVISIBLE);
five4.setVisibility(View.INVISIBLE);
five5.setVisibility(View.INVISIBLE);
isVisible = false;
if (isVisible) {
if (isVisible2) {
five2.setVisibility(View.INVISIBLE);
isVisible2 = false;
} else {
// five2.setVisibility(View.VISIBLE);
isVisible2 = true;
}
}
}
}
class MyClickListener3 implements View.OnClickListener {
@Override
public void onClick(View v) {
flag = 3;
layout.setBackgroundResource(imageidsSecond[flag - 1]);
five.setVisibility(View.INVISIBLE);
five1.setVisibility(View.INVISIBLE);
five2.setVisibility(View.INVISIBLE);
five3.setVisibility(View.INVISIBLE);
five4.setVisibility(View.INVISIBLE);
five5.setVisibility(View.INVISIBLE);
isVisible = false;
if (isVisible) {
if (isVisible3) {
five3.setVisibility(View.INVISIBLE);
isVisible3 = false;
} else {
// five3.setVisibility(View.VISIBLE);
isVisible3 = true;
}
}
}
}
class MyClickListener4 implements View.OnClickListener {
@Override
public void onClick(View v) {
flag = 4;
layout.setBackgroundResource(imageidsSecond[flag - 1]);
five.setVisibility(View.INVISIBLE);
five1.setVisibility(View.INVISIBLE);
five2.setVisibility(View.INVISIBLE);
five3.setVisibility(View.INVISIBLE);
five4.setVisibility(View.INVISIBLE);
five5.setVisibility(View.INVISIBLE);
isVisible = false;
if (isVisible) {
if (isVisible4) {
five4.setVisibility(View.INVISIBLE);
isVisible4 = false;
} else {
// five4.setVisibility(View.VISIBLE);
isVisible4 = true;
}
}
}
}
class MyClickListener5 implements View.OnClickListener {
@Override
public void onClick(View v) {
flag = 5;
layout.setBackgroundResource(imageidsSecond[flag - 1]);
five.setVisibility(View.INVISIBLE);
five1.setVisibility(View.INVISIBLE);
five2.setVisibility(View.INVISIBLE);
five3.setVisibility(View.INVISIBLE);
five4.setVisibility(View.INVISIBLE);
five5.setVisibility(View.INVISIBLE);
isVisible = false;
if (isVisible) {
if (isVisible5) {
five5.setVisibility(View.INVISIBLE);
isVisible5 = false;
} else {
// five5.setVisibility(View.VISIBLE);
isVisible5 = true;
}
}
}
}
}