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
- Android自定义BaseAdapter看看小动物们在说啥
- android自定义 BaseAdapter
- android AutoCompleteTextView 自定义BaseAdapter
- Android自定义适配器BaseAdapter
- android AutoCompleteTextView 自定义BaseAdapter
- android AutoCompleteTextView 自定义BaseAdapter
- android 自定义适配器BaseAdapter
- Android 自定义BaseAdapter
- android AutoCompleteTextView 自定义BaseAdapter
- android BaseAdapter 自定义适配器 BaseAdapter基类抽取 一
- android BaseAdapter 自定义适配器 BaseAdapter基类抽取 二
- Android学习ListView自定义布局,适配器BaseAdapter
- Android自定义适配器,BaseAdapter的使用方法
- Android中自定义适配器BaseAdapter基本用法
- 关于Android自定义适配器BaseAdapter浅谈
- Android 自定义全局baseAdapter和ViewHolder
- Android 自定义全局baseAdapter和ViewHolder
- android-继承BaseAdapter自定义适配器基础
- Error:Execution failed for task ':app:processDebugResources'.解决
- ajax、反向ajax、jsonp详解
- Strlen在实际使用中的一点体会
- 隐藏状态栏
- Nightmare Ⅱ
- Android自定义BaseAdapter看看小动物们在说啥
- Android属性动画——实现灵动菜单效果
- HDU3507 Print Article
- 使用Flexible实现手淘H5页面的终端适配
- Yii2数据库查询有关的操作
- ORIGIN 9.0 拟合曲线延伸
- c++ 如何获取当前登录用户的名字
- Qt5 - 中文 - 常量中有换行符
- linux文件内容的复制与粘贴