结合子类父类和LIstView适配器相关设置,初步体验类的多态。

在初级阶段,我们常对listview的适配器都是在一个activity类中全部写满。当你接触项目多了,你会发现大神都把各种适配器放一个包里,要用直接传如相关参数到适配器的构造方法设置ListView。今天做了个简单的demo,对于菜鸟理解多态有帮助。在MainActivity中代码如下

public class MainActivity extends Activity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

ListView list = (ListView) findViewById(R.id.listView1);

MyAdapter my  = new MyAdapter(5, MainActivity.this);

list.setAdapter(my);

}

@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;

}

}

在MyAdapter类中继承和代码如下

public class MyAdapter extends BaseAdapter{

private LayoutInflater inflater;

private int i;

public MyAdapter(int i,Context context) {

this.i = i;

inflater = LayoutInflater.from(context);

}

@Override

public int getCount() {

// TODO Auto-generated method stub

return 10;

}

@Override

public Object getItem(int position) {

// TODO Auto-generated method stub

return null;

}

@Override

public long getItemId(int position) {

// TODO Auto-generated method stub

return 0;

}

@Override

public View getView(int position, View convertView, ViewGroup parent) {

// TODO Auto-generated method stub

View inflate = inflater.inflate(R.layout.item, null);

return inflate;

}

}

在MainActivity中 MyAdapter my  = new MyAdapter(5, MainActivity.this);就执行了MyAdapter中的构造方法,一般只会执行到MyAdapter的构造方法,但由于BaseAdapter的特殊性,它自动调用getcount()等方法。这样就通过BaseAdapter适配器设置了ListView的相关设置。

结合子类父类和LIstView适配器相关设置,初步体验类的多态。

时间: 2024-08-04 14:36:38

结合子类父类和LIstView适配器相关设置,初步体验类的多态。的相关文章

自定义ListView适配器Adapter引用布局文件的情况下实现点击列表项时背景颜色为灰色

listview控件设置适配器的时候,如果使用自定义的adapter,比如MyArrayAdapter extends ArrayAdapter<String> 如果listitem布局文件不做任何处理的话,点击列表项的时候不会出现背景色灰色的现象. 实现思路是:在listitem布局文件中为该布局文件中的父控件:LinearLayout,设置android:background="@drawable/listitemclickseletor" 其中listitemclic

带按钮Listview适配器

本文介绍的工程实现的功能是:按下列表项提示"您点击了第x个列表项,内容为:第x个列表项",按下列表项中的按钮,在日子面板打印"您点击了第x个按钮第x个列表项". 许多自定义适配器都继承BaseAdapter,但对于列表项带有按钮的列表并不是最佳选择,本文介绍的便是关于列表项带有按钮的列表适配器(继承了SimpleAdapter). 界面如下图 先从布局来看,这个界面是用两个xml文件组成,一个较为简单,就是一个ListView <RelativeLayout

android之ListView,详细介绍实现步骤,举例,自定义listview适配器

android之ListView,详细介绍实现步骤,举例,自定义listview适配器 09. 四 / android基础 / 没有评论 本文来源于www.ifyao.com禁止转载!www.ifyao.com android中如何使用listView是比较重要的,因为很多时候都需要将数据库中的数据以列表显示, 具体使用步骤:大体 1,建立一个item.xml文件,此布局文件布局布局如何具体显示列表中的每一个条目 2,在要使用listview的界面中添加listview控件. 3,activit

IOS上 关于状态栏的相关设置(UIStatusBar)

转:http://my.oschina.net/shede333/blog/304560#OSC_h3_8 IOS上 关于状态栏的相关设置(UIStatusBar) 知识普及 ios上状态栏 就是指的最上面的20像素高的部分 状态栏分前后两部分,要分清这两个概念,后面会用到: 前景部分:就是指的显示电池.时间等部分: 背景部分:就是显示黑色或者图片的背景部分: 如下图:前景部分为白色,背景部分为黑色  注意:这里只涉及到ios7以及更高版本,低版本下面的讲解可能无效. 设置statusBar的[

Android开发之适配器-ListView适配器的重复数据

适配器是Android中的数据与View视图的桥梁,作用就是将数据通过适配器显示到对应的View视图上. 工作中,在用ListView做适配器数据时候,有些人肯定碰见过,如何优化效率,但是又出现重复数据的情况,如何避免重复数据而且又能提高ListView大数据量时候的效率呢?,解决方案就是2点: 1. 在getView方法中 进行View的判断,即做convertView ==null 这样的判断,这样是为了提高数据量大的时候的效率. 2.设置数据用setTag()/getTag()方法来进行对

Android应用之——利用getItemViewType为Listview的item设置不同的布局

一.概述 在项目的需求中,有一处需要显示一个交易记录的列表,这个列表很容易让人联想到用listview来实现,但是这个列表又有稍许不同的地方,那就是它里面的item并不是一样的布局,其中某些部分显示的是消费的记录,而有些地方显示的是充值的记录,也就对应了不同的item布局.而且,这两处地方都是从服务端获取数据的,这两个item的数据对应的类内容也各不相同,该怎么处理呢? 下面来一步步实现这个效果. 二.先看效果图 三.实现步骤 实现的原理就是listview的adapter中的一个关键的方法就是

类型转换,类与类之间的转换,继承关系,继承与静态变量,子类父类重名,多继承,虚基类

 常量的基本类型转换,例如:int num(10.8),这种方式是隐式转换. 通过函数的构造函数实现转换. 类类转换函数,当构造函数不能将类型转换成基本类型时.所以就有了类类转换函数,通过这种方式. 案例: #include <iostream> class fushu { public: //通过加explicit的这种方式避免隐式转换,避免引发歧义 explicit fushu(int num) { x = num; y = num; } void print() { std::cou

Android studio界面相关设置

Android studio界面相关设置 原文出自 http://www.cnblogs.com/justinzhang/p/4274839.html 用惯了emacs的操作方式,每当使用一款新的编辑器的时候,第一个想到的就是这个工具有没有emacs的快捷键,Android studio也是一样的. 1. Android studio设置emacs的方式如下,点击File->Settings 选择其中的keymap,在keymap中选择emacs,这样就成功的设置好了emacs的操作模式: 2.

C#.Net 导出Excel 之单元格 相关设置

range.NumberFormatLocal = "@";     //设置单元格格式为文本range = (Range)worksheet.get_Range("A1", "E1");     //获取Excel多个单元格区域:本例做为Excel表头range.Merge(0);     //单元格合并动作worksheet.Cells[1, 1] = "Excel单元格赋值";     //Excel单元格赋值range