CheckBox,ImageView,ListView

checkBox

checkBox也是一个选择的键,这种按键不像RedioButton那样只能是单选,可以是多选的也可以是全都不选,可以用于对密码是否显示的选择键,也可以是爱好的多选按键。其最核心的地方在代码中的isChecked的判断,若被选中返回true,否则返回flase。下面有一个显示密码的代码:
在XML中:

 <EditText
            android:id="@+id/EditText_password"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            //默认是隐藏密码的
            android:password="true"
            />
    <CheckBox
        android:id="@+id/checkbox_password"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="是否显示密码"
        />

在代码中:

 mCheckBoxShowPassWord= (CheckBox) findViewById(R.id.checkbox_password);
        mCheckBoxShowPassWord.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                if(isChecked){
                    mEditTextPassword.setTransformationMethod(null);
                }else{
                    mEditTextPassword.setTransformationMethod(new PasswordTransformationMethod());
                }
            }
        });

若被选中则显示密码,否则隐藏密码。

ImageView

ImageView是用来存放图片的,主要掌握三个关键字:src,background,scaleType

src是用来引入图片的例如:

android:src="@mipmap/piture"

background是用来设置ImageView的背景的,可以是填充颜色,也可以是图片作为背景。
scaletype相对来说比较复杂,但也不是很复杂。主要来设置图像的存放位置,
android:scaleType=”“,冒号中可以有fitStart,endStart,fitCebter,center,centerCrop等,从字面的意思也可以看出一些作用,其中centerCrop是不拉伸,充满窄边。

还有一个关键字tint

其在XML中设置主要用于给图片加一层蒙板,可以设置蒙版的颜色,使其变得更加美妙。例如:

  android:tint="#55ff0000"

这就设置了一个透明度为55,颜色为红色的蒙板。
还可以通过按键在代码中调整图片的透明度。在XML中设置两个按键,如下图所示:

<Button
            android:id="@+id/btn_add"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="增加透明度"
            />
        <Button
            android:id="@+id/btn_sub"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="减少透明度"
            />

在代码中。

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.image);
        mImageViewPicture= (ImageView) findViewById(R.id.imageView_two);
//可以用于改变ImageView中的图片。      mImageViewPicture.setImageResource(R.mipmap.zhaoliying);
        mBtnadd= (Button) findViewById(R.id.btn_add);
        mBtnSub= (Button) findViewById(R.id.btn_sub);
        mBtnadd.setOnClickListener(this);
        mBtnSub.setOnClickListener(this);

    }
   @TargetApi(Build.VERSION_CODES.JELLY_BEAN)//版本号的声明
    @Override
    public void onClick(View v) {
        int code = Build.VERSION.SDK_INT;//得到SDK的版版号
        switch (v.getId()){
            case R.id.btn_add:
                alth+=5;
                if(code<16){
                    mImageViewPicture.setAlpha(alth);
                }else{
                    mImageViewPicture.setImageAlpha(alth);
                }
                break;
            case R.id.btn_sub:
                alth-=5;
                if(code<16){
                    mImageViewPicture.setAlpha(alth);
                }else{
                    mImageViewPicture.setImageAlpha(alth);
                }
                break;
        }
    }

这里由于版本问题做了一些判断。
mImageViewPicture.setImageResource(R.mipmap.zhaoliying);
用于对ImageView中的图片进行替换。

ListView

ListView是一种使数据一条条的显示的像一个空架子一样的东西。主要用于MVc设计模式中,M为数据,V为View及显示在界面中,C为controll控制M以什么样的形式显示在View中。
数据想放到ListView上必须经过适配器,将数据转化成规定的形式。
ListView常用的适配器有ArrayAdapter,simpleAdapter,自定义适配器。

ArrayAdapter

这个数据会存在数组中。代码如下:

public class mListView extends Activity {
    private ListView mListView;
    String [] array ={"张三","李四","王五"};
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.nlist);
        mListView= (ListView) findViewById(R.id.mListist);
// ArrayAdapter<String> adapter =new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,array);
        ArrayAdapter<String> adapter =new ArrayAdapter<String>(this,R.layout.item_list,array);
        mListView.setAdapter(adapter);
    }
}

在XML中:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent">
    <ListView  android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/mListist" ></ListView>
</LinearLayout>

数据存放到了array数组中。
android.R.layout.simple_list_item_1是android自带的数据显示方式
通过mListView.setAdapter(adapter);将数据放到ListView中。
ArrayAdapter中存放的数据类型必须一样,这极大地限制了内容的丰富度。

SimpleAdapter

SimpleAdapter的构造器中传输的数据必须是List类型的而且其中的内容为Map类型的。我们可以在Map中装入各种类型的数据。代码如下:

public class mListView extends Activity {
    private ListView mListView;
    ArrayList<Map<String,String >> mDate;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.item_list);
        setContentView(R.layout.nlist);
        mListView= (ListView) findViewById(R.id.mListist);
        inidate();
        SimpleAdapter eAdapter= new SimpleAdapter(this,mDate,R.layout.item_simpleview,new String[]{"name","age","sex","hobby"},
                new int[]{R.id.name,R.id.age,R.id.sex,R.id.hobby} );
        mListView.setAdapter(eAdapter);

        //android.R.layout.simple_list_item_1是一种格式,这种格式是将数据放入ListView中的格式
// ArrayAdapter<String> adapter =new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,array);


    }
    public void inidate(){
        mDate=new ArrayList<>();
        HashMap<String,String> zhangsan=creatHashMap("张三","20","男","打球");
        mDate.add(zhangsan);

        HashMap<String,String> lisi=creatHashMap("李四","20","男","打球");
        mDate.add(lisi);

        HashMap<String,String> wangwu=creatHashMap("王五","20","男","打球");
        mDate.add(wangwu);

    }
    public HashMap<String,String> creatHashMap(String name,String age,String sex,String hobby){
        HashMap<String,String> hashMap = new HashMap<>();
        hashMap.put("name",name);
        hashMap.put("age",age);
        hashMap.put("sex",sex);
        hashMap.put("hobby",hobby);
        return hashMap;
    }
}

在item_simpleview的XML中:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" >
    <TextView  android:id="@+id/name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="name" />
    <LinearLayout  android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" >
        <TextView  android:id="@+id/age" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="age" />
        <TextView  android:id="@+id/sex" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="sex" />

    </LinearLayout>
    <TextView  android:id="@+id/hobby" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="hobby" />

</LinearLayout>

自定义Adapter

我们这里还用ArrayList来承装数据,类型为Student类的对象。
自定义的Adapter是个java类来继承BaseAdapter。重写4个方法,
public int getCount() {
return mDate.size();
}方法是获得数据的个数。
public Object getItem(int position) {
return position;
}

@Override
public long getItemId(int position) {
    return position;
}这两方法获得数据的在List中的index。
最主要的方法是:public View getView(int position, View convertView, ViewGroup parent)
这个方法返回一个View,这个view是可以放到ListView中的被适配器设置好位置的。

代码如下:
在StudentAdapter中:

package com.example.administrator.test.mode;

import android.media.Image;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;

import com.example.administrator.test.R;
import com.example.administrator.test.example.Student;

import java.util.List;

/** * Created by Administrator on 2015/8/24. */
public class StudentAdapter extends BaseAdapter {
    List<Student> mDate;
    private LayoutInflater mflater;
   public  StudentAdapter(LayoutInflater inflater ,List<Student> data){
       mflater=inflater;
       mDate=data;

   }
    @Override
    public int getCount() {
        return mDate.size();
    }

    @Override
    public Object getItem(int position) {
        return position;
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View view =mflater.inflate(R.layout.item_simpleview,null);
        Student student =mDate.get(position);
        ImageView imageView= (ImageView) view.findViewById(R.id.image);
        TextView textView_name= (TextView) view.findViewById(R.id.name);
        TextView textView_age= (TextView) view.findViewById(R.id.age);
        TextView textView_sex= (TextView) view.findViewById(R.id.sex);
        TextView textView_hobby= (TextView) view.findViewById(R.id.hobby);
        textView_name.setText(student.getName());
        textView_sex.setText(student.getSex());
        textView_age.setText(student.getAge());
        textView_hobby.setText(student.getHobby());
        imageView.setImageResource(student.getImage());
        return view;
    }
}

在Student类中:

package com.example.administrator.test.example;

/** * Created by Administrator on 2015/8/24. */
public class Student {
    private String name;
    private String age;
    private String sex;
    private String hobby;
    private int image;
  public Student(String name,String age,String sex,String hobby,int image){
      this.name=name;
      this.age=age;
      this.sex=sex;
      this.hobby=hobby;
      this.image=image;

  }
    public void setImage(int image) {
        this.image = image;
    }

    public int getImage() {

        return image;
    }

    public void setAge(String age) {
        this.age = age;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public void setHobby(String hobby) {
        this.hobby = hobby;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getName() {

        return name;
    }

    public String getHobby() {
        return hobby;
    }

    public String getSex() {
        return sex;
    }

    public String getAge() {
        return age;
    }
}

在代码中:

public class mListView extends Activity {
    private ListView mListView;
    ArrayList<Student> mDate;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.item_list);
        setContentView(R.layout.nlist);

        mListView = (ListView) findViewById(R.id.mListist);
        LayoutInflater inflater = getLayoutInflater();
        indate();
        StudentAdapter studentAdapter = new StudentAdapter(inflater, mDate);

         mListView.setAdapter(studentAdapter);
    }

    private void indate() {
        mDate=new ArrayList<>();
        Student zhangsan=new Student("张三","20","女","打球",R.mipmap.zhaoliying);
        Student lisi=new Student("李四","18","男","睡觉",R.mipmap.zhaolikun);
        Student wangwu=new Student("王五","21","女","玩游戏",R.mipmap.baby);
        mDate.add(zhangsan);
        mDate.add(lisi);
        mDate.add(wangwu);
    }
}

你可能感兴趣的:(CheckBox,ImageView,ListView)