Android适配器及适配器控件

时间:2021-10-23 19:33:47

Android适配器及适配器控件

ArrayAdapter

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_studentlist"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.mystudy.StudentlistActivity">
<ListView
    android:id="@+id/student_name"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"></ListView>
</RelativeLayout>



public class StudentlistActivity extends AppCompatActivity {
private ListView student_name;
    private String[] name={"你要","乖乖","听话"};
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_studentlist);
        student_name= (ListView) findViewById(R.id.student_name);
        ArrayAdapter<String> adapter=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,name);
        student_name.setAdapter(adapter);
        student_name.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                String namelist=name[position];
                Intent intent=new Intent(StudentlistActivity.this,MainActivity.class);
                intent.putExtra("NAME",namelist);
                startActivity(intent);
            }
        });
    }
}

自定义适配器

命名 extends BaseAdapter

public class ListstudentAdapter extends BaseAdapter {
    private Context context;
    private List<Studentname> studentnameList;

    public ListstudentAdapter(Context context, List<Studentname> studentnameList) {
        this.context = context;
        this.studentnameList = studentnameList;
    }

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

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

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

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View view= LayoutInflater.from(context).inflate(R.layout.student_item,null);
        TextView nametv= (TextView) view.findViewById(R.id.student_itemname);
        TextView namecity= (TextView) view.findViewById(R.id.student_itemcity);
        TextView nameage= (TextView) view.findViewById(R.id.student_itemage);

        nametv.setText(studentnameList.get(position).getName());
        namecity.setText(studentnameList.get(position).getCity());
        nameage.setText(studentnameList.get(position).getAge()+"");
        return view;
    }
}

SimpleAdapter

public class MainActivity extends AppCompatActivity {  

    //用三个数组装载数据 
    private String[] names = new String[]{"大雄", "叶子", "吴叶"};  
    private String[] says = new String[]{"无敌学渣", "无敌美女", "无敌可爱"};  
    private int[] imgIds = new int[]{R.mipmap.icon1, R.mipmap.icon2, R.mipmap.icon3};  

    @Override  
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.activity_main);  

        List<Map<String, Object>> listitem = new ArrayList<Map<String, Object>>();  
        for (int i = 0; i < names.length; i++) {  
            Map<String, Object> showitem = new HashMap<String, Object>();  
            showitem.put("touxiang", imgIds[i]);  
            showitem.put("name", names[i]);  
            showitem.put("says", says[i]);  
            listitem.add(showitem);  
        }  
        //创建一个simpleAdapter 
        SimpleAdapter myAdapter = new SimpleAdapter(getApplicationContext(),listitem,  
                R.layout.list_item,new String[]{"touxiang","name","says"},  
                new int[]{R.id.imgtou,R.id.name,R.id.says});  
          ListView listView = (ListView)findViewById(R.id.list_test);  
          listView.setAdapter(myAdapter);  
    }  
}  

simpleadapter和arrayadapter的区别:

Simpleadapter可以展示混合数据值类型,而Arrayaadapter只能展示单个数据类型意味着

PageAdapter:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_viewpager0" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.mystudy.Viewpager0Activity">
<android.support.v4.view.ViewPager  android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/view_v4"></android.support.v4.view.ViewPager>
</RelativeLayout>
OneFragment
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import com.example.mystudy.R;

/** * A simple {@link Fragment} subclass. */
public class OneFragment extends Fragment {


    public OneFragment() {
        // Required empty public constructor
    }


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        return inflater.inflate(R.layout.fragment_one, container, false);
    }

}
TwoFragment
package com.example.mystudy.fragment;


import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import com.example.mystudy.R;

/** * A simple {@link Fragment} subclass. */
public class TwoFragment extends Fragment {


    public TwoFragment() {
        // Required empty public constructor
    }


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        return inflater.inflate(R.layout.fragment_two, container, false);
    }

}

FragmentAdapter

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;

import java.util.List;

/** * Created by 哈哈哈 on 2018/1/15. */

public class FragmentAdapter extends FragmentPagerAdapter {
    private List<Fragment> fragmentList;

    public FragmentAdapter(FragmentManager fm, List<Fragment> fragmentList) {
        super(fm);
        this.fragmentList = fragmentList;
    }

    @Override
    public Fragment getItem(int position) {
        return fragmentList.get(position);
    }

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

Viewpager0Activity

import android.support.v4.app.Fragment;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

import com.example.mystudy.alladapter.FragmentAdapter;
import com.example.mystudy.fragment.OneFragment;
import com.example.mystudy.fragment.TwoFragment;

import java.util.ArrayList;
import java.util.List;

public class Viewpager0Activity extends AppCompatActivity {
private ViewPager viewPager;
    private List<Fragment> fragmentList=new ArrayList<>();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_viewpager0);
        viewPager= (ViewPager) findViewById(R.id.view_v4);

        OneFragment oneFragment=new OneFragment();
        TwoFragment twoFragment=new TwoFragment();
        fragmentList.add(oneFragment);
        fragmentList.add(twoFragment);

        FragmentAdapter fragmentAdapter=new FragmentAdapter(getSupportFragmentManager(),fragmentList);
        viewPager.setAdapter(fragmentAdapter);
    }
}

适配器控件

ViewPager(v4包下的)

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_viewpager0" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.mystudy.Viewpager0Activity">
<android.support.v4.view.ViewPager  android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/view_v4"></android.support.v4.view.ViewPager>
</RelativeLayout>

ListView

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_studentlist" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.mystudy.StudentlistActivity">
<ListView  android:id="@+id/student_name" android:layout_width="match_parent" android:layout_height="wrap_content"></ListView>
</RelativeLayout>

GridView

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_example" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.listviewtest.ExampleActivity">
<GridView  android:numColumns="4" android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/example_gridview"></GridView>
</RelativeLayout>

GridView总体代码

布局

//exampleitem:

<?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">
<TextView  android:layout_width="0dp" android:layout_weight="1" android:layout_height="wrap_content" android:textSize="30sp" android:id="@+id/exercise_name"/>
    <TextView  android:layout_width="0dp" android:layout_weight="1" android:layout_height="wrap_content" android:textSize="30sp" android:id="@+id/exercise_city"/>
    <TextView  android:layout_width="0dp" android:layout_weight="1" android:layout_height="wrap_content" android:textSize="30sp" android:id="@+id/exercise_age"/>
</LinearLayout>

//GridView布局

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_example" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.listviewtest.ExampleActivity">
<GridView  android:numColumns="4" android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/example_gridview"></GridView>
</RelativeLayout>

适配器

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.TextView;

import com.example.listviewtest.R;

import java.util.List;

/** * Created by 哈哈哈 on 2018/1/9. */

public class Gridexamadapter extends BaseAdapter {
private Context context;
    private List<Exam> examList;

    public Gridexamadapter(Context context, List<Exam> examList) {
        this.context = context;
        this.examList = examList;
    }

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

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

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

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View view=null;
        ViewHodel viewHodel;
        if (convertView==null){
            view=LayoutInflater.from(context).inflate(R.layout.exampleitem,null);
            viewHodel=new ViewHodel();
            viewHodel.imageView= (ImageView) view.findViewById(R.id.exam_image);
            viewHodel.exam_name= (TextView) view.findViewById(R.id.exam_name);
            viewHodel.exam_number= (TextView) view.findViewById(R.id.exam_number);
            view.setTag(viewHodel);
        }else {
            view=convertView;
            viewHodel= (ViewHodel) view.getTag();
        }

        viewHodel.imageView.setImageResource(examList.get(position).getExamimage());
        viewHodel.exam_name.setText(examList.get(position).getExamname());
        viewHodel.exam_number.setText(examList.get(position).getExamnumber()+"");

        return view;
    }
    class ViewHodel{
        ImageView imageView;
        TextView exam_name,exam_number;

    }
}

实体

public class Exam {
    private int examimage;
    private int examnumber;
    private String examname;

    public Exam(int examimage, String examname, int examnumber) {
        this.examimage = examimage;
        this.examname = examname;
        this.examnumber = examnumber;
    }

    public int getExamimage() {
        return examimage;
    }

    public void setExamimage(int examimage) {
        this.examimage = examimage;
    }

    public int getExamnumber() {
        return examnumber;
    }

    public void setExamnumber(int examnumber) {
        this.examnumber = examnumber;
    }

    public String getExamname() {
        return examname;
    }

    public void setExamname(String examname) {
        this.examname = examname;
    }
}

Activity

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

import android.widget.GridView;

import com.example.listviewtest.exercise.Exam;
import com.example.listviewtest.exercise.Gridexamadapter;

import java.util.ArrayList;
import java.util.List;

public class ExampleActivity extends AppCompatActivity {
private GridView gridView;
    private List<Exam> examList=new ArrayList<>();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_example);
        gridView= (GridView) findViewById(R.id.example_gridview);

        Exam exam1=new Exam(R.mipmap.ic_launcher,"宁宁",2);
        Exam exam2=new Exam(R.mipmap.ic_launcher,"宁宁",2);
        Exam exam3=new Exam(R.mipmap.ic_launcher,"宁宁",2);
        Exam exam4=new Exam(R.mipmap.ic_launcher,"宁宁",2);
        examList.add(exam1);
        examList.add(exam2);
        examList.add(exam3);
        examList.add(exam4);

        Gridexamadapter gridexamadapter=new Gridexamadapter(this,examList);
        gridView.setAdapter(gridexamadapter);

    }
}