`
holoblog
  • 浏览: 1227793 次
博客专栏
E0fcf0b7-6756-3051-9a54-90b4324c9940
SQL Server 20...
浏览量:18932
文章分类
社区版块
存档分类
最新评论

android自定义ListView详解

 
阅读更多

在这里我就对自定义ListView进行讲解下吧,直入真题吧,首先我新创建一个项目:listDemo;

其次,我们需要建立一个XML文件,在这里我就直接写在main.xml里:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<ListView
android:id="@+id/listView"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
</LinearLayout>
然后我们需要定义一个ITEM.XML来显示其数据:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<ImageView
android:id="@+id/images_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/icon"
/>
<LinearLayout
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
>
<TextView
android:id="@+id/text_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="default_001"
/>
<TextView
android:id="@+id/text_info"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="default_info"
/>
<TextView
android:id="@+id/text_url"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="default_url"
/>

</LinearLayout>
</LinearLayout>

现在我们把XML文件做好了,就是对其适配数据的布局进行定义了,首先我们需要创建一个类:

package com.jsd;

import java.util.ArrayList;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.widget.ListView;

import com.jsd.adapter.AppAdapter;
import com.jsd.model.AppInfos;

/**
* ListView customer
* @author jiangshide
*
*/
public class Demo extends Activity {

private Context mContext;
private ListView listView;
private ArrayList<AppInfos> appInfos;
private AppAdapter appAdapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
getComponenets();
}

/**
* componenet
*/
public void getComponenets(){
this.mContext = this;
listView = (ListView) findViewById(R.id.listView);
appInfos = new ArrayList<AppInfos>();
loadDatas();
appAdapter = new AppAdapter(mContext,appInfos);
listView.setAdapter(appAdapter);
}

/**
* load datas
*/
public void loadDatas(){
for (int i = 0; i < 10; i++) {
AppInfos ai = new AppInfos();
if(i == 1){
ai.setImages(R.drawable.icon);
}else if(i == 2){
ai.setImages(R.drawable.item1);
}else if(i == 3){
ai.setImages(R.drawable.item2);
}else if(i == 4){
ai.setImages(R.drawable.item3);
}else if(i == 5){
ai.setImages(R.drawable.item4);
}else if(i == 6){
ai.setImages(R.drawable.item5);
}
ai.setText_id("001");
ai.setText_infos("这是我们都需要注意的...");
ai.setText_url("http://jiangshide.com");
appInfos.add(ai);
}
}
}

这位主线程的UI类,

其实需要穿件一个适配器需要继承BaseAdapter:

package com.jsd.adapter;

import java.util.ArrayList;

import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;

import com.jsd.model.AppInfos;
import com.jsd.view.AppView;

/**
* Adapter
* @author jiangshide
*
*/
public class AppAdapter extends BaseAdapter {

private Context mContext;
private ArrayList<AppInfos> appInfos;

public AppAdapter(Context c) {
this.mContext = c;
}

public AppAdapter(Context c,ArrayList<AppInfos> appInfos) {
this.mContext = c;
this.appInfos = appInfos;
}

public int getCount() {
return appInfos.size();
}

public Object getItem(int position) {
return appInfos.get(position);
}

public long getItemId(int position) {
return position;
}

/**
* get view
*/
public View getView(int position, View convertView, ViewGroup parent) {
if(appInfos == null){
return null;
}
if(convertView == null){
AppView appView = new AppView(mContext);
appView.updateView(appInfos.get(position));
convertView = appView;
}else{
((AppView)convertView).updateView(appInfos.get(position));
}
return convertView;
}

}

为了对其数据进行适配,我们需要对数据进行持久话:使用BEAN的方式进行保存

package com.jsd.model;

/**
* datas
* @author jiangshide
*
*/
public class AppInfos {

private int images;
private String text_id;
private String text_infos;
private String text_url;

public int getImages() {
return images;
}
public void setImages(int images) {
this.images = images;
}
public String getText_id() {
return text_id;
}
public void setText_id(String textId) {
text_id = textId;
}
public String getText_infos() {
return text_infos;
}
public void setText_infos(String textInfos) {
text_infos = textInfos;
}
public String getText_url() {
return text_url;
}
public void setText_url(String textUrl) {
text_url = textUrl;
}
}

再次就是对View显示布局的控件进行定义来对数据参数的获取

package com.jsd.view;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;

import com.jsd.R;
import com.jsd.model.AppInfos;

/**
* View
* @author jiangshide
*
*/
public class AppView extends LinearLayout {

private Context mContext;
private ImageView image_id;
private TextView text_id,text_info,text_url;

/**
*
* @param context
*/
public AppView(Context context) {
super(context);
this.mContext = context;
initilize(context);
}

/**
*
* @param c
*/
public void initilize(Context c){
this.mContext = c;
View view = LayoutInflater.from(this.mContext).inflate(R.layout.item, null);
image_id = (ImageView) view.findViewById(R.id.images_id);
text_id = (TextView) view.findViewById(R.id.text_id);
text_info = (TextView) view.findViewById(R.id.text_info);
text_url = (TextView) view.findViewById(R.id.text_url);
addView(view);
}

/**
*
* @param ai
*/
public void updateView(AppInfos ai){
image_id.setImageResource(ai.getImages());
text_id.setText(ai.getText_id());
text_info.setText(ai.getText_infos());
text_url.setText(ai.getText_url());
}
}

OK,以上就是完整的代码实现对ListView的自定义的实现,

下个小结我开始讲GridView的自定义显示方式,同样会以完整的代码显示方式来实现。。。。。。

分享到:
评论

相关推荐

    Android 自定义ListView示例详解

    本文主要介绍Android 自定义ListView的知识,这里整理了相关资料及实现示例代码,和实现效果图,有兴趣的小伙伴可以参考下

    《Android自定义组件开发详解》

    封面 1 序 2 捐助说明 5 目 录 7 第一章 View的绘图流程 12 ...10.5.2 列表项能滑出删除按钮的ListView 342 10.5.3 定义布局文件 350 10.5.4 显示ListView 351 10.6练习作业 353 案例代码说明 354

    Android自定义控件EditText使用详解

    主要为大家详细介绍了Android自定义控件EditText的使用方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    Android仿新浪微博自定义ListView下拉刷新(4)

    该自定义Listview代码详解具体可参考: //www.jb51.net/article/97845.htm 此处详细介绍Adapter的详细代码。 1.首先给Adapter绑定ListView布局。 2.其次创建一个层次对应组件的类,将对应的组件和对象进行关联,...

    android ListView初级到高级详解

    包括简单的list,复杂的list,自定义的list例子 还包括 本行控件操作本行其它控件的例子,十分有用!

    详解Android中ListView实现图文并列并且自定义分割线(完善仿微信APP)

    本篇文章主要介绍了Android中ListView实现图文并列并且自定义分割线(完善仿微信APP),具有一定的参考价值,有兴趣的可以了解一下。

    详解xamarin Android 实现ListView万能适配器

    详解xamarin Android 实现ListView万能适配器 早些时候接触xamarin Android 的列表,写了很多ListView的Adapter,建一个ListView就写一个Adapter,每一个Adapter里面还有去写一个ViewHolder的类来优化,自从看了...

    android开发入门与实战(下)

    7.6 用好列表,做好程序——列表(ListView)介绍与实例 7.6.1 实例程序演示 7.6.2 实例编程实现 7.7 友好地互动交流——对话框(Dialog)介绍与实例 7.8 温馨的提醒——Toast和Notification应用 7.8.1 实例操作演示 ...

    Android ListView详解

    ListView 控件可使用四种不同视图显示项目。通过此控件,可将项目组成带有或不带有列标头的列,并显示伴随的图标和文本。 可使用 ListView 控件将称作 ListItem 对象的列表条目组织成... 在android开发中ListView是比

    Android开发 自定义底部可滑动浮层Listview.apk

    根据Android开发 View的生命周期结合代码详解和一张流程图带你完全搞懂Android的View事件分发机制并结合源码详解,实现列表底部悬浮自动弹起手动滑动皆可实现,平滑滚动效果极佳。

    Android自定义引导玩转ViewPager的方法详解

    ViewPager简介: ViewPager(android.support.v4.view.... ViewPager类需要一个PagerAdapter适配器类给它提供数据,这个和ListView类似。 ViewPager基础使用 具体步骤: 1.在布局文件里加入 &lt;android.suppor

    Android代码-AndroidNote Android笔记

    自定义View详解 Activity界面绘制过程详解 Activity启动过程 Android Touch事件分发详解 AsyncTask详解 butterknife源码详解 InstantRun详解 ListView源码分析 VideoView源码分析 View绘制过程详解 网络部分 ...

    徐宜生 Android群英传 书签索引

    《Android群英传》共分为13章,讲解了Android体系与系统架构、Android开发工具新接触、Android控件架构与自定义控件详解、ListView使用技巧、Android Scroll分析、Android绘图机制与处理技巧、Android动画机制与使用...

    Android群英传.pdf+源码

    《Android群英传》共分为13章,讲解了Android体系与系统架构、Android开发工具新接触、Android控件架构与自定义控件详解、ListView使用技巧、Android Scroll分析、Android绘图机制与处理技巧、Android动画机制与使用...

    Android群英传_徐宜生 完整带目录版

    《Android群英传》共分为13章,讲解了Android体系与系统架构、Android开发工具新接触、Android控件架构与自定义控件详解、ListView使用技巧、Android Scroll分析、Android绘图机制与处理技巧、Android动画机制与使用...

    Android ListView里控件添加监听方法的实例详解

    Android ListView里控件添加监听方法的实例详解  关于ListView,算是android中比较常见的控件,在ListView我们通常需要一个模板,这个模板指的不是住模块,而是配置显示在ListView里面的东西,今天做项目的时候发现...

    Android群英传_完整高清版

    《Android群英传》共分为13章,讲解了Android体系与系统架构、Android开发工具新接触、Android控件架构与自定义控件详解、ListView使用技巧、Android Scroll分析、Android绘图机制与处理技巧、Android动画机制与使用...

    Android研究院之应用开发

    Android研究院之应用开发 ...Android研究院之应用程序ListView 详解 (六) . . . Android研究院之应用开发自定义图片剪辑头像设置(二十五) Android研究院之应用开发列表项添加进度框进阶(二十六)

    Android基础知识详解

    Android的系统架构 6 一、应用程序 6 二、应用程序框架 6 三、Android Runtime 7 四、系统库 7 五、Linux 内核 8 Webkit浏览器引擎简介 9 Dalvik虚拟机简介 11 什么是Dalvik虚拟机 11 Dalvik和Android系统 11 Dalvik...

Global site tag (gtag.js) - Google Analytics