--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的更多相关文章

  1. Android中利用ViewHolder优化自定义Adapter的典型写法

    利用ViewHolder优化自定义Adapter的典型写法 最近写Adapter写得多了,慢慢就熟悉了. 用ViewHolder,主要是进行一些性能优化,减少一些不必要的重复操作.(WXD同学教我的. ...

  2. android代码优化----ListView中自定义adapter的封装(ListView的模板写法)

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  3. Android中Spinner下拉列表(使用ArrayAdapter和自定义Adapter实现) .

    今天学习了Spinner组件,使用Spinner相当于从下拉列表中选择项目,下面演示一下Spinner的使用(分别使用ArrayAdapter和自定义Adapter实现) (一):使用ArrayAda ...

  4. Android ListView 自定义 Adapter

    自定义Adapter类 public class ListViewAdapter extends BaseAdapter { private static final String TAG = Mai ...

  5. android 自定义adapter和线程结合 + ListView中按钮滑动后状态丢失解决办法

    adapter+线程 1.很多时候自定义adapter的数据都是来源于服务器的,所以在获取服务器的时候就需要异步获取,这里就需要开线程了(线程池)去获取服务器的数据了.但这样有的时候adapter的中 ...

  6. 关于自定义adapter使用getApplicationContext()影响主题

    最近弄了一个东西,listview+switch构成界面 关于android自定义adapter,继承自baseadapter,发现界面的switch开关主题变了想要的是浅色的主题,但是却发现变成了深 ...

  7. Android中的普通对话框、单选对话框、多选对话框、带Icon的对话框、以及自定义Adapter和自定义View对话框详解

    对话框就是一个AlertDialog,但是一个简单的AlertDialog,我们却可以将它玩出许多花样来,下面我们就来一起总结一下AlertDialog的用法.看看各位童鞋在平时的工作中否都用到了Al ...

  8. 【转】Android自定义Adapter的ListView的思路及代码

    原文网址:http://www.jb51.net/article/37236.htm Android自定义Adapter的ListView的思路及代码,需要的朋友可以参考一下   在开发中,我们经常使 ...

  9. 关于自定义Adapter实现ListView的使用

    以下为使用BaseAdapter作扩展,自定义Adapter来使用ListView控件: 需要注意以下的几点: 1.自定义Adapter时,需要特别注意Adapter类中getView()方法覆盖,注 ...

  10. 【转】Android中Spinner下拉列表(使用ArrayAdapter和自定义Adapter实现)

    原文网址:http://embed.21ic.com/software/android/201403/31603.html 1 :Android中Spinner下拉列表(使用ArrayAdapter和 ...

随机推荐

  1. C#中的virtual & override

    很奇怪的设计,需要靠着两个Keyword共同作用,才能完成多态——而不是类似Java那样的默认多态.所谓共同作用,即基类使用virtual 标示函数,子类使用override显示重写. 有点奇怪,MS ...

  2. 前台传到servlet的乱码问题要怎么处理

  3. Asp.net MVC 4 模型的数据注释

    [Bind(…)] Lists fields to exclude or include when binding parameter or form values to model properti ...

  4. Part 1 What is SSMS?

    note that,SSMS is a client tool and not the server by itself,it is a developer machines connects to ...

  5. .NET判断某一年的所有放假的日期

    由于工作需求写的一个程序,判断某一年所有的放假日期,根据国家的法定假日和补休日期进行的判断. protected void Button1_Click(object sender, EventArgs ...

  6. highcharts 图表库的简单使用

    Highcharts简介: Highcharts是一款纯javascript编写的图表库,能够很简单便捷的在Web网站或Web应用中添加交互性的图表,Highcharts目前支持直线图.曲线图.面积图 ...

  7. 【学习笔记】【C语言】标识符

    1. 什么是标识符 标识符就是在程序中自定义的一些符号和名称.要跟关键字区分开来:关键字是C语言默认提供的符号,标识符是程序员自定义的 2. 标识符的作用 1) 标识符,从字面上理解就是用来标识某些东 ...

  8. c 语言时间的输出和比较

    time_t The most basic representation of a date and time is the type time_t. The value of a time_t va ...

  9. 8款效果惊艳的HTML5 3D动画

    1.HTML5 WebGL水面水波荡漾特效 之前已经向各位分享过一款很逼真的HTML5水波荡漾特效,效果还算不错.今天再向大家分享一款更加给力的HTML5水波动画,画面上是一个大水池,水池底部是一颗大 ...

  10. 关于java的转义字符

    关于java的转义字符 我们都知道  String s="ad,dfjdlfs,df,s,dfl";              执行 String re[]=s.split(&qu ...