自定义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和 ...
随机推荐
- Kinect For Windows V2开发日志四:使用OpenCV显示深度图像
代码示例: #include <Kinect.h> #include <iostream> #include <opencv2\highgui.hpp> using ...
- asp.net中用正则表达式验证数据格式
这是一个验证是否为数字的例子: Regex reg = new Regex(@"^[0-9]+\.{0,1}[0-9]*$");reg.IsMatch(textBox1.T ...
- c#获取网页内容的三种方法
1.webclient WebClient wc = new WebClient(); Stream stm = wc.OpenRead(str_url); StreamReader sr = new ...
- android app性能优化大汇总(google官方Android性能优化典范 - 第1季)
大多数用户感知到的卡顿等性能问题的最主要根源都是因为渲染性能.从设计师的角度,他们希望App能够有更多的动画,图片等时尚元素来实现流畅的用户体验.但是Android系统很有可能无法及时完成那些复杂的界 ...
- JS闭包理解_摘
原文地址1:http://www.cnblogs.com/mzwr1982/archive/2012/05/20/2509295.html 闭包是一个比较抽象的概念,尤其是对js新手来说.书上的解释实 ...
- 第二篇、Swift_自定义 tabbar 的 badgeValue显示样式
在实际的开发中,我们常常需要根据实际的需求,去改变bageValue的显示样式,默认是红色的背景,白色的字体颜色 使用方式: class BKTabBarController: UITabBarCon ...
- iOS-图片拉伸,最常用的图片拉伸操作总结(干货)
概念介绍 直接拉伸图片有时候会导致图片四周变的很模糊 所以要想办法使图片四周的形状不变.于是,端盖(end cap)的概念出来了,用来指定图片中的哪一部分不用拉伸.比如下图中,黄色代表需要被拉伸的矩形 ...
- 20141016--for 菱形
Console.Write("请输入一个数:"); int n = int.Parse(Console.ReadLine()); ; i <= n; i++) { ; b & ...
- 添加远程链接MySQL的权限
mysql> grant 权限1,权限2,…权限n on 数据库名称.表名称 to 用户名@用户地址 identified by ‘连接口令’; 权限1,权限2,…权限n代表select,ins ...
- Android app version code and name
android:versionCode和android:versionName 区别 Android的版本可以在androidmainfest.xml中定义, 主要有android:version ...