当前位置:   article > 正文

基于Android的开发项目中Adapter的用法_android适配器的使用

android适配器的使用

        adapter就是“适配器”,适配器是一种设计模式,它允许不兼容的接口之间进行交互。适配器将一个类的接口转换成客户端所期望的另一个接口。它通常用于解决两个现有接口之间不兼容的问题,使它们能够协同工作。适配器模式可以通过继承或组合来实现。

       比如我们在淘宝或者京东所看到的一些商品信息等,都是使用了适配器,通俗来说,适配器的作用就是将我们想显示到界面上的信息,按照一个固定的布局格式显示。

基本的步骤包括:1.在主界面的布局文件中创建一个<listview>标签;2.在创建一个单独的布局文件表示你想要显示内容的框架;3.创建一个用于添加数据的布局文件;4.创建一个适配器类(myadapter)继承baseadapter或者其他的适配器类;5.从数据端传输数据给适配器;6.通过适配器将用户输入的内容按照自己定义的框架显示在主界面上。

1.在主界面的布局文件中创建一个<listview>标签

<ListView
    android:id="@+id/listview"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:dividerHeight="2dp"
    android:divider="#a41c9d"
    android:headerDividersEnabled="false"/>

这个是为了用列表的方式在主界面按照自己设定的框架显示你输入的内容

2.在创建一个单独的布局文件表示你想要显示内容的框架

你想要让内容以什么形式展示出来,就定义成哪种形式的框架,以下用一个通讯录框架进行演示

<ImageView
    android:id="@+id/img"
    android:layout_width="70dp"
    android:layout_height="70dp" />
<LinearLayout
    android:orientation="vertical"
    android:layout_width="160dp"
    android:layout_weight="1"
    android:layout_height="70dp">
    <TextView
        android:id="@+id/name"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="10dp"
        android:text="姓名"
        android:textSize="24dp"/>
    <TextView
        android:id="@+id/number"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="10dp"
        android:layout_marginTop="7dp"
        android:text="电话"
        android:textSize="20dp"/>
</LinearLayout>
<Button
    android:layout_width="75dp"
    android:layout_height="70dp"
    android:focusable="false"
    android:id="@+id/button_massages"
    android:background="@drawable/u" />
<Button
    android:layout_width="75dp"
    android:layout_height="70dp"
    android:focusable="false"
    android:id="@+id/button_call"
    android:background="@drawable/ku" />

3.创建一个用于添加数据的布局文件

<ImageButton
    android:id="@+id/img"
    android:layout_width="100dp"
    android:layout_height="100dp"
    android:layout_gravity="center"
    android:layout_marginTop="24dp"
    android:src="@drawable/touxiang"
    android:scaleType="fitCenter"
    android:background="#27837676"/>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:layout_marginTop="10dp">

    <TextView
        android:layout_width="0dp"
        android:layout_weight="1"
        android:layout_height="50dp"
        android:gravity="center|right"
        android:text="姓名"
        android:textSize="22dp"/>

    <EditText
        android:id="@+id/edit_name"
        android:layout_width="0dp"
        android:layout_weight="4"
        android:layout_height="50dp"
        android:layout_marginLeft="10dp"
        android:lines="1"/>
</LinearLayout>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:layout_marginTop="15dp">
    <TextView
        android:layout_width="0dp"
        android:layout_weight="1"
        android:layout_height="50dp"
        android:gravity="center|right"
        android:text="电话"
        android:textSize="22dp"/>

    <EditText
        android:id="@+id/edit_nubmer"
        android:layout_width="0dp"
        android:layout_weight="4"
        android:layout_height="50dp"
        android:layout_marginLeft="10dp"
        android:inputType="phone"
        android:lines="1"/>
</LinearLayout>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:layout_marginTop="15dp">
    <TextView
        android:layout_width="0dp"
        android:layout_weight="1"
        android:layout_height="50dp"
        android:gravity="center|right"
        android:text="邮件"
        android:textSize="22dp"/>

    <EditText
        android:id="@+id/edit_Email"
        android:layout_width="0dp"
        android:layout_weight="4"
        android:layout_height="50dp"
        android:layout_marginLeft="10dp"
        android:lines="1"/>
</LinearLayout>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:layout_marginTop="15dp">
    <TextView
        android:layout_width="0dp"
        android:layout_weight="1"
        android:layout_height="50dp"
        android:gravity="center|right"
        android:text="Q  Q"
        android:textSize="22dp"/>

    <EditText
        android:id="@+id/qq"
        android:layout_width="0dp"
        android:layout_weight="4"
        android:layout_height="50dp"
        android:layout_marginLeft="10dp"
        android:lines="1"/>
</LinearLayout>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:layout_marginTop="15dp">
    <TextView
        android:layout_width="0dp"
        android:layout_weight="1"
        android:layout_height="50dp"
        android:gravity="center|right"
        android:text="地址"
        android:textSize="22dp"/>

    <EditText
        android:id="@+id/edit_adress"
        android:layout_width="0dp"
        android:layout_weight="4"
        android:layout_height="50dp"
        android:layout_marginLeft="10dp"
        android:lines="1"/>
</LinearLayout>
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:layout_marginTop="15dp">
    <TextView
        android:layout_width="0dp"
        android:layout_weight="1"
        android:layout_height="50dp"
        android:gravity="center|right"
        android:text="备注"
        android:textSize="22dp"/>

    <EditText
        android:id="@+id/edit_bei"
        android:layout_width="0dp"
        android:layout_weight="4"
        android:layout_height="50dp"
        android:layout_marginLeft="10dp"
        android:lines="1"/>
</LinearLayout>


<Button
    android:id="@+id/add_modify"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="30dp"
    android:layout_gravity="center"
    android:background="#e5a7e634"
    android:text="添加" />

4.创建一个适配器类(myadapter)继承baseadapter或者其他的适配器类

public class MyAdapter extends BaseAdapter{
    public Context context;
    public LinkedList<Data> datas;
    public MyAdapter(){

    }
    public MyAdapter(Context context,LinkedList<Data> datas){
        this.context=context;
        this.datas=datas;
    }
    @Override
    public int getCount() {
        return datas.size();
    }

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

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

    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {
        ViewHoder viewHoder=null;
        if(convertView==null){
     convertView=LayoutInflater.from(context).inflate(R.layout.list_item,parent,false);
        
            viewHoder=new ViewHoder();
            viewHoder.image= (ImageView) convertView.findViewById(R.id.img );
            viewHoder.name= (TextView) convertView.findViewById(R.id.name);
            viewHoder.number= (TextView) convertView.findViewById(R.id.number);
           
            convertView.setTag(viewHoder);
        }else {
            viewHoder= (ViewHoder) convertView.getTag();
        }
        viewHoder.image.setImageBitmap(datas.get(position).bitmap);
        viewHoder.name.setText(datas.get(position).name);
        viewHoder.number.setText(datas.get(position).number);
return convertView;

}

public class ViewHoder{
    ImageView image;
    TextView name;
    TextView number;
}
convertView= LayoutInflater.from(context).inflate(R.layout.list_item,parent,false);这句代码的意思是,定义一个convertview视图,让该视图等于你自己定义的内容框架,

viewHoder.image= (ImageView) convertView.findViewById(R.id.img );

viewHoder.name= (TextView) convertView.findViewById(R.id.name);

viewHoder.number= (TextView) convertView.findViewById(R.id.number);

分别获取自定义内容框架上各个视图的id,并且与自定义viewhoder类中的属性进行绑定,从数据接口传进来数据,再将数据赋值给各个视图。

5.从数据端传输数据给适配器

public void initview() {
    edit_name = (EditText) findViewById(R.id.edit_name);
    edit_number = (EditText) findViewById(R.id.edit_nubmer);
    edit_emile = (EditText) findViewById(R.id.edit_Email);
    edit_qq = (EditText) findViewById(R.id.qq);
    edit_adress = (EditText) findViewById(R.id.edit_adress);
    edit_bei = (EditText) findViewById(R.id.edit_bei);
    img = (ImageButton) findViewById(R.id.img);
    button = (Button) findViewById(R.id.add_modify);
}

获取数据端的各个数据的id

Intent intent = new Intent();
intent.putExtra("姓名", edit_name.getText().toString());
intent.putExtra("电话", edit_number.getText().toString());
intent.putExtra("邮件", edit_emile.getText().toString());
intent.putExtra("QQ", edit_qq.getText().toString());
intent.putExtra("地址", edit_adress.getText().toString());
intent.putExtra("备注", edit_bei.getText().toString());

//intent.putExtra("图片",bitmap);
setResult(RESULT_OK, intent);
finish();

获取输入的数据内容,并返回主界面

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    switch (requestCode) {
        case 1:
            if (resultCode == RESULT_OK) {
                String s1 = data.getStringExtra("姓名");
                String s2 = data.getStringExtra("电话");
                String s3 = data.getStringExtra("邮件");
                String s4 = data.getStringExtra("QQ");
                String s5 = data.getStringExtra("地址");
                String s6 = data.getStringExtra("备注");
                //Bitmap bitmap=data.getParcelableExtra("图片");
                Bitmap bitmap = TransBitmap.getBitmap();
                myAdapter.add(new Data(bitmap, s1, s2,s3,s4,s5,s6));
            }
            break;

在主界面中接受从数据端传回来的数据,并把数据全部给到适配器

6.通过适配器将用户输入的内容按照自己定义的框架显示在主界面上。

myAdapter=new MyAdapter(context,datas);
listView.setAdapter(myAdapter);

在主界面调用适配器

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/代码探险家/article/detail/856387
推荐阅读
相关标签
  

闽ICP备14008679号