Android自定义BaseAdapter看看小动物们在说啥

来源:互联网 发布:酒店软件系统排名 编辑:程序博客网 时间:2024/04/30 00:22

Android自定义BaseAdapter看看小动物们在说啥

这里写图片描述

ListView自带上下滑动

这里写图片描述

这里也是根据大神学习的就不装逼了

布局文件:activity_main.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical"    tools:context=".MainActivity">    <TextView        android:layout_width="match_parent"        android:layout_height="48dp"        android:textSize="18sp"        android:text="动物的世界你们不懂"        android:gravity="center"        />    <ListView        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:id="@+id/list_animal"        android:layout_gravity="center_horizontal" /></LinearLayout>

展示视图控制文件:MainActivity

package run.yang.com.baseadapterdemo;import android.content.Context;import android.net.Uri;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.LayoutInflater;import android.view.View;import android.widget.AdapterView;import android.widget.LinearLayout;import android.widget.ListView;import android.widget.Toast;import com.google.android.gms.appindexing.Action;import com.google.android.gms.appindexing.AppIndex;import com.google.android.gms.common.api.GoogleApiClient;import java.util.LinkedList;import java.util.List;public class MainActivity extends AppCompatActivity implements AdapterView.OnItemClickListener {    private List<Animal> mData = null;    private Context mContext;    private AnimalAdapter mAdapter = null;    private ListView list_animal;    private LinearLayout ly_content;    /**     * ATTENTION: This was auto-generated to implement the App Indexing API.     * See https://g.co/AppIndexing/AndroidStudio for more information.     */    private GoogleApiClient client;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        mContext = MainActivity.this;        list_animal = (ListView) findViewById(R.id.list_animal);        //动态加载顶部View和底部View        final LayoutInflater inflater = LayoutInflater.from(this);        View headView = inflater.inflate(R.layout.view_header, null, false);        View footView = inflater.inflate(R.layout.view_footer, null, false);        mData = new LinkedList<Animal>();        mData.add(new Animal("狗说", "你是狗么?", R.drawable.ic_icon_dog));        mData.add(new Animal("牛说", "你是牛么?", R.drawable.ic_icon_cow));        mData.add(new Animal("鸭说", "你是鸭么?", R.drawable.ic_icon_duck));        mData.add(new Animal("鱼说", "你是鱼么?", R.drawable.ic_icon_fish));        mData.add(new Animal("马说", "你是马么?", R.drawable.ic_icon_horse));        mData.add(new Animal("马说", "你是马么?", R.drawable.ic_icon_horse));        mData.add(new Animal("马说", "你是马么?", R.drawable.ic_icon_horse));        mData.add(new Animal("马说", "你是马么?", R.drawable.ic_icon_horse));        mData.add(new Animal("马说", "你是马么?", R.drawable.ic_icon_horse));        mData.add(new Animal("马说", "你是马么?", R.drawable.ic_icon_horse));        mData.add(new Animal("马说", "你是马么?", R.drawable.ic_icon_horse));        mAdapter = new AnimalAdapter((LinkedList<Animal>) mData, mContext);        //添加表头和表尾需要写在setAdapter方法调用之前!!!        list_animal.addHeaderView(headView);        list_animal.addFooterView(footView);        list_animal.setAdapter(mAdapter);        list_animal.setOnItemClickListener(this);        // ATTENTION: This was auto-generated to implement the App Indexing API.        // See https://g.co/AppIndexing/AndroidStudio for more information.        client = new GoogleApiClient.Builder(this).addApi(AppIndex.API).build();    }    @Override    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {        Toast.makeText(mContext, "你点击了第" + position + "项", Toast.LENGTH_SHORT).show();    }    @Override    public void onStart() {        super.onStart();        // ATTENTION: This was auto-generated to implement the App Indexing API.        // See https://g.co/AppIndexing/AndroidStudio for more information.        client.connect();        Action viewAction = Action.newAction(                Action.TYPE_VIEW, // TODO: choose an action type.                "Main Page", // TODO: Define a title for the content shown.                // TODO: If you have web page content that matches this app activity's content,                // make sure this auto-generated web page URL is correct.                // Otherwise, set the URL to null.                Uri.parse("http://host/path"),                // TODO: Make sure this auto-generated app URL is correct.                Uri.parse("android-app://run.yang.com.baseadapterdemo/http/host/path")        );        AppIndex.AppIndexApi.start(client, viewAction);    }    @Override    public void onStop() {        super.onStop();        // ATTENTION: This was auto-generated to implement the App Indexing API.        // See https://g.co/AppIndexing/AndroidStudio for more information.        Action viewAction = Action.newAction(                Action.TYPE_VIEW, // TODO: choose an action type.                "Main Page", // TODO: Define a title for the content shown.                // TODO: If you have web page content that matches this app activity's content,                // make sure this auto-generated web page URL is correct.                // Otherwise, set the URL to null.                Uri.parse("http://host/path"),                // TODO: Make sure this auto-generated app URL is correct.                Uri.parse("android-app://run.yang.com.baseadapterdemo/http/host/path")        );        AppIndex.AppIndexApi.end(client, viewAction);        client.disconnect();    }}

写个Animal.java,大家不陌生吧

package run.yang.com.baseadapterdemo;/** * Created by yang_zzheng on 2016/7/14 * yangzhizheng2012@163.com */public class Animal {    private String aName;    private String aSpeak;    private int aIcon;    public Animal() {    }    public Animal(String aName, String aSpeak, int aIcon) {        this.aName = aName;        this.aSpeak = aSpeak;        this.aIcon = aIcon;    }    public String getaName() {        return aName;    }    public String getaSpeak() {        return aSpeak;    }    public int getaIcon() {        return aIcon;    }    public void setaName(String aName) {        this.aName = aName;    }    public void setaSpeak(String aSpeak) {        this.aSpeak = aSpeak;    }    public void setaIcon(int aIcon) {        this.aIcon = aIcon;    }}

自定义的BaseAdapter—->AnimalAdapter.java

package run.yang.com.baseadapterdemo;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 java.util.LinkedList;/** * Created by yang_zzheng on 2016/7/14 * yangzhizheng2012@163.com */public class AnimalAdapter extends BaseAdapter {    private LinkedList<Animal> mData;    private Context mContext;    public AnimalAdapter(LinkedList<Animal> mData, Context mContext) {        this.mData = mData;        this.mContext = mContext;    }    @Override    public int getCount() {        return mData.size();    }    @Override    public Object getItem(int position) {        return null;    }    @Override    public long getItemId(int position) {        return position;    }    @Override     public View getView(int position, View convertView, ViewGroup parent) {        ViewHolder holder = null;        if(convertView == null){            convertView = LayoutInflater.from(mContext).inflate(R.layout.item_list_animal,parent,false);            holder = new ViewHolder();            holder.img_icon = (ImageView) convertView.findViewById(R.id.img_icon);            holder.txt_aName = (TextView) convertView.findViewById(R.id.txt_aName);            holder.txt_aSpeak = (TextView) convertView.findViewById(R.id.txt_aSpeak);            convertView.setTag(holder);   //将Holder存储到convertView中        }else{            holder = (ViewHolder) convertView.getTag();        }        holder.img_icon.setBackgroundResource(mData.get(position).getaIcon());        holder.txt_aName.setText(mData.get(position).getaName());        holder.txt_aSpeak.setText(mData.get(position).getaSpeak());        return convertView;    }    static class ViewHolder{        ImageView img_icon;        TextView txt_aName;        TextView txt_aSpeak;    }}

当然少不了我们的列表项目布局item_list_animal.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="horizontal">    <!-- 定义一个用于显示头像的ImageView -->    <ImageView        android:id="@+id/img_icon"        android:layout_width="64dp"        android:layout_height="64dp"        android:baselineAlignBottom="true"        android:paddingLeft="8dp" />    <!-- 定义一个竖直方向的LinearLayout,把QQ呢称与说说的文本框设置出来 -->    <LinearLayout        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:orientation="vertical">        <TextView            android:id="@+id/txt_aName"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:paddingLeft="8dp"            android:textColor="#1D1D1C"            android:textSize="20sp" />        <TextView            android:id="@+id/txt_aSpeak"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:paddingLeft="8px"            android:textColor="#B4B4B9"            android:textSize="14sp" />    </LinearLayout></LinearLayout>

这里我们还添加了view_header.xml表头

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical"    android:gravity="center">    <TextView        android:layout_width="match_parent"        android:layout_height="48dp"        android:textSize="18sp"        android:text="表头"        android:gravity="center"        android:background="#43BBEB"        android:textColor="#FFFFFF"/></LinearLayout>

这里我们还添加了view_footer.xml表尾

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical"    android:gravity="center">    <TextView        android:layout_width="match_parent"        android:layout_height="48dp"        android:textSize="18sp"        android:text="表尾"        android:gravity="center"        android:background="#43BBEB"        android:textColor="#FFFFFF"/></LinearLayout>

我越往后学,感觉越来兴趣了,猪神真的很牛

本文参考文献

http://blog.csdn.net/coder_pig/article/details/48577231

0 0