--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. oracle PL/SQL(procedure language/SQL)程序设计之游标cursors

    游标 Cursors--Conception 每一条被Oracle服务器执行的SQL语句都有一个独立的游标与之相关联:隐式游标 Implicit cursors: 用于所有的DML和PL/SQL的SE ...

  2. 第四节 数据格式化和ModelAttribute注解的介绍

    从来都不坦荡,情绪都写在脸上:不开心的时候,不爱说话,笑也勉强. 课堂笔记,如果这么写,不仅仅是手速,还要有语速, 这样不太适合! --胖先生 关于数据传递: 客户端传递数据到服务端: 1.使用普通的 ...

  3. [转载]在线考试javaScript倒计时

    <script type="text/javascript"> /* ================== hi.baidu.com/coolinc === */ va ...

  4. 关于CSS的只言片语

    这段时间做了一个简单的页面,借机又重温了一下CSS的相关知识,现总结一下: 工欲善其事必先利其器,让我们先做一点准备工作 1.在页面添加: <meta http-equiv="x-ua ...

  5. js使用CSS将图片转换成黑白(灰色、置灰)

    详细内容请点击 可能早就知道,像汶川这种糟糕的日子网站全灰在IE下是可以轻松实现的(filter: gray;),不过,当时,其他浏览器是无解的. 不过,时代发展,如今,CSS3的逐步推进,我们也开始 ...

  6. Java之奇偶组合

    写一个函数,将已知数组的奇数项组合成一个新的数组,在函数中调用该数组,并且输出新数组的内容. 定义一个数组,该数组为{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17 ...

  7. Swift优雅的实现枚举的定义及使用

    1.枚举是用来表示值的“类型”. 2.定义枚举类型“FamilyRelationshipType” enum FamilyRelationshipType { case GrandFather cas ...

  8. C# 数据操作工具类

    CREATE PROCEDURE [dbo].[RecordFromPage] @SelectList VARCHAR(max), @TableSource VARCHAR(100), @Search ...

  9. 为apache与mysql创建快捷方式

    为apache与mysql创建快捷方式 1)为apache创建快捷方式(软链接) 以后我们就可以在终端的任一位置,使用apachectl start|stop|restart   2)为mysql创建 ...

  10. android 数据库中的事务_银行转账示例

    主java package com.itheima.transtation; import com.itheima.transtation.db.BankOpenHelper; import andr ...