自定义Adapter
--MainActivity代码
package com.example.qqdemo; import java.util.ArrayList;
import java.util.List; import android.os.Bundle;
import android.app.Activity;
import android.view.Gravity;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView; public class MainActivity extends Activity { private List<UserInfo> list = new ArrayList<UserInfo>();// 定义数据源
private ListView mylistviwe; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initlist();
initview();
} @Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
} private void initview() {
mylistviwe = (ListView) findViewById(R.id.listview);
mylistviwe.setAdapter(new Myadapter());//绑定适配器
} /**
* 2015-4-30 向数据源添加数据
*/
private void initlist() { for (int i = 0; i < 20; i++) {
UserInfo uif = new UserInfo();
if (i % 2 == 0) {
uif.setImage(R.drawable.monkey );
uif.setMag("Hello");
uif.setFlag(true);
} else {
uif.setImage(R.drawable.monkey1 );
uif.setMag("HI");
uif.setFlag(false);
}
list.add(uif);
} } /**
* 定义内部类 自定义适配器 实现数据绑定
*/ private class Myadapter extends BaseAdapter { @Override
public int getCount() {// 修改getCount()返回值为list的长度 return list.size();// 返回数据的条数
} @Override
public Object getItem(int position) {// 修改getItem()list封装具体内容 return list.get(position);// 获取item里面的内容
} @Override
public long getItemId(int position) { // 返回对应位置getItemId;
// 返回对应位置getItemId; return position;// 返回item的位置
} // 绑定数据getview->findviewbyid ->给控件添加数据
@Override
public View getView(int position, View convertView, ViewGroup parent) { // 手动生成View对象 查找XML中控件。
// R.layout.item_xml-->找到XML控件
// null-->是否把读取上来的view添加到容器当中
View v = View.inflate(MainActivity.this, R.layout.item_xml, null);
// 得到当先控件的ID
ImageView leftimage = (ImageView) v.findViewById(R.id.leftimage);
ImageView rigtimage = (ImageView) v.findViewById(R.id.rigtimage);
TextView tvshow = (TextView) v.findViewById(R.id.mytextview);
UserInfo muif = list.get(position);// 获取到item里面的内容 // 将item添加到ListView中
if (muif.isFlag()) {
rigtimage.setVisibility(View.GONE);
leftimage.setVisibility(View.VISIBLE);
leftimage.setImageResource(muif.getImage());
tvshow.setText(muif.getMag());
tvshow.setGravity(Gravity.LEFT); } else {
rigtimage.setVisibility(View.VISIBLE);
leftimage.setVisibility(View.GONE);
leftimage.setImageResource(muif.getImage());
tvsh ow.setText(muif.getMag());
tvshow.setGravity(Gravity.RIGHT); }
return v;
} } }
1 package com.example.qqdemo;
2 /**
3 * 封装UserInfo对象
4 * @author wenfei
5 */
6 public class UserInfo {
7 private int image;
8 private String mag;
9 private boolean flag;
10
11
12 public int getImage() {
13 return image;
14 }
15 public void setImage(int image) {
16 this.image = image;
17 }
18 public String getMag() {
19 return mag;
20 }
21 public void setMag(String mag) {
22 this.mag = mag;
23 }
24 public boolean isFlag() {
25 return flag;
26 }
27 public void setFlag(boolean flag) {
28 this.flag = flag;
29 }
30
31
32 }
--XML文件
<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"
tools:context=".MainActivity" > <ListView
android:id="@+id/listview"
android:layout_width="match_parent"
android:layout_height="match_parent" /> </LinearLayout>
<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" > <RelativeLayout
android:layout_width="match_parent"
android:layout_height="50dp" > <ImageView
android:id="@+id/leftimage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:src="@drawable/monkey" /> <TextView
android:id="@+id/mytextview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_toLeftOf="@+id/rigtimage"
android:layout_toRightOf="@+id/leftimage"
android:gravity="right"
android:text="我来了" /> <ImageView
android:id="@+id/rigtimage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:src="@drawable/monkey1" />
</RelativeLayout> </LinearLayout>
自定义Adapter的更多相关文章
- Android中利用ViewHolder优化自定义Adapter的典型写法
利用ViewHolder优化自定义Adapter的典型写法 最近写Adapter写得多了,慢慢就熟悉了. 用ViewHolder,主要是进行一些性能优化,减少一些不必要的重复操作.(WXD同学教我的. ...
- android代码优化----ListView中自定义adapter的封装(ListView的模板写法)
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
- Android中Spinner下拉列表(使用ArrayAdapter和自定义Adapter实现) .
今天学习了Spinner组件,使用Spinner相当于从下拉列表中选择项目,下面演示一下Spinner的使用(分别使用ArrayAdapter和自定义Adapter实现) (一):使用ArrayAda ...
- Android ListView 自定义 Adapter
自定义Adapter类 public class ListViewAdapter extends BaseAdapter { private static final String TAG = Mai ...
- android 自定义adapter和线程结合 + ListView中按钮滑动后状态丢失解决办法
adapter+线程 1.很多时候自定义adapter的数据都是来源于服务器的,所以在获取服务器的时候就需要异步获取,这里就需要开线程了(线程池)去获取服务器的数据了.但这样有的时候adapter的中 ...
- 关于自定义adapter使用getApplicationContext()影响主题
最近弄了一个东西,listview+switch构成界面 关于android自定义adapter,继承自baseadapter,发现界面的switch开关主题变了想要的是浅色的主题,但是却发现变成了深 ...
- Android中的普通对话框、单选对话框、多选对话框、带Icon的对话框、以及自定义Adapter和自定义View对话框详解
对话框就是一个AlertDialog,但是一个简单的AlertDialog,我们却可以将它玩出许多花样来,下面我们就来一起总结一下AlertDialog的用法.看看各位童鞋在平时的工作中否都用到了Al ...
- 【转】Android自定义Adapter的ListView的思路及代码
原文网址:http://www.jb51.net/article/37236.htm Android自定义Adapter的ListView的思路及代码,需要的朋友可以参考一下 在开发中,我们经常使 ...
- 关于自定义Adapter实现ListView的使用
以下为使用BaseAdapter作扩展,自定义Adapter来使用ListView控件: 需要注意以下的几点: 1.自定义Adapter时,需要特别注意Adapter类中getView()方法覆盖,注 ...
- 【转】Android中Spinner下拉列表(使用ArrayAdapter和自定义Adapter实现)
原文网址:http://embed.21ic.com/software/android/201403/31603.html 1 :Android中Spinner下拉列表(使用ArrayAdapter和 ...
随机推荐
- Linux中的特殊权限粘滞位(sticky bit)详解
Linux下的文件权限 在linux下每一个文件和目录都有自己的访问权限,访问权限确定了用户能否访问文件或者目录和怎样进行访问.最为我们熟知的一个文件或目录可能拥有三种权限,分别是读.写.和执行操作, ...
- p45.asm
; ========================================== ; pmtest3.asm ; 编译方法:nasm pmtest3.asm -o pmtest3.com ; ...
- [freemarker篇]04.简单介绍-基本数据类型
好几天没有更新博客了,最近一顿乱七八糟的忙!今天简单更新第四章,这里只能说是简单介绍,因为权威的还是需要看Freemarker的官方中文手册! 好几天没有更新博客了,最近一顿乱七八糟的忙!今天简单更新 ...
- log4net保存到数据库系列四、完整代码配置log4net
园子里面有很多关于log4net保存到数据库的帖子,但是要动手操作还是比较不易,从头开始学习log4net数据库日志一.WebConfig中配置log4net 一.WebConfig中配置log4ne ...
- JavaScript--基本包装类型(13)
// JS为了便于操作基本类型,提供了3个特殊的引用类型:Boolean/Number和String; 一 基本包装类型概述 // 实际上,每当读取一个基本类型值的时候,后台就会创建一个对应的基本包装 ...
- Sql 求比率 类型 影响 结果
- MVC基础知识-持续更新....
1.如何在自动生成的视图中显示需要的字段名称: 在相应的定义字段中添加Display,例如: [Display(Name = "用户名:")] public string User ...
- SQL Server 2008数据库同步配置
以下内容转载于网络,个人做了简单的修改. 数据库同步可以是同一个服务器之间不同数据库之间数据同步,也可以是局域网内不同服务器间数据库的同步. 下面具体说一下步骤,首先我们说一下发布服 ...
- sql语句创建主键、外键、索引、绑定默认值
use Mengyou88_Wuliu --创建公司表 create table dbo.Company2 ( CompanyID ,) not null, CompanyName ) null, A ...
- 【转载】#303 - Accessibility of Class Members
Members of a class can have different kinds of accessibility. An accessibility keyword indicates wha ...