android自定义ListView
2010-01-22 11:32
public class PeoplesAdapter extends BaseAdapter {
private Context context;
private LinearLayout peopleLineLayout;
private EditText headTxtSearch;
public PeoplesAdapter(Context c) {
this.context = c;
mInflater = (LayoutInflater) c
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
private ArrayList<PeopleVO> peoples = null;
private LayoutInflater mInflater = null;
@Override
public int getCount() {
if (peoples != null) {
return peoples.size();
} else {
return 0;
}
}
@Override
public Object getItem(int position) {
return position;
}
@Override
public long getItemId(int position) {
return position;
}
private static class ViewHolder {
ImageView imgCheck;
TextView txtName;
TextView txtMobile;
TableLayout peopleTableLayout;
PeopleVO people;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
ViewHolder holder = null;
if (convertView == null) {
holder = new ViewHolder();
convertView = mInflater.inflate(R.layout.list_people, null);
holder.imgCheck = (ImageView) convertView
.findViewById(R.id.imgCheck);
holder.txtName = (TextView) convertView
.findViewById(R.id.txtPeopleName);
holder.txtMobile = (TextView) convertView
.findViewById(R.id.txtPeopleMobile);
} else {
holder = (ViewHolder) convertView.getTag();
}
PeopleVO currentPeople = peoples.get(position);
holder.txtName.setText(currentPeople.name);
holder.txtMobile.setText(currentPeople.mobile);
holder.people = currentPeople;
convertView.setTag(holder);
convertView.setOnClickListener(viewOnClick);
return convertView;
}
View.OnClickListener viewOnClick = new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
v.setSelected(true);
ImageView imgView = (ImageView) v.findViewById(R.id.imgCheck);
ViewHolder holder = (ViewHolder) v.getTag();
PeopleVO people = holder.people;
if (people.isSelect) {
imgView.setImageResource(R.drawable.checkbox_off_background);
} else {
imgView.setImageResource(R.drawable.checkbox_on_background);
}
people.isSelect = !people.isSelect;
}
};
public ArrayList<PeopleVO> getPeoples() {
return peoples;
}
public void setPeoples(ArrayList<PeopleVO> peoples) {
this.peoples = peoples;
notifyDataSetChanged();
}
public void addPeople(PeopleVO people) {
if (peoples == null) {
peoples = new ArrayList();
}
peoples.add(people);
}
Activity 继承 ListActivity
在onCreate中设置Adapter
setListAdapter(new PeoplesAdapter (this));
list_people.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="wrap_content">
<ImageView android:layout_width="wrap_content"
android:layout_height="fill_parent" android:id="@+id/imgCheck" android:src="@drawable/checkbox_off_background" />
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent" android:layout_weight="8">
<TextView android:id="@+id/txtPeopleName"
android:layout_width="fill_parent" android:layout_height="wrap_content" android:textSize="32px" />
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="手机:" />
<TextView android:layout_width="fill_parent" android:id="@+id/txtPeopleMobile"
android:layout_height="wrap_content" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
效果如下:
分享到:
相关推荐
布局最终是用户看到的界面,Android的应用采用了典型的MVC结构,而布局就是MVC中的View,这种View通过单独的xml文件配置,与代码分开,当然也可以通过代码来设置布局;在Android4.0之后有六大布局,分别为:...
Android Studio 在xml文件中设置界面布局1、xml文件中给输入框editText修改下划线颜色2、设置button按钮为圆角及修改按钮颜色3、运用约束布局时预览效果和运行效果不一致 写一写今天困扰我很久的问题:如何给...
最好将数据和布局ID分开管理。 5. **优化性能** - **ViewHolder模式**:为了进一步提高性能,可以使用ViewHolder模式。ViewHolder是一个简单的类,持有ListView项视图中的各个组件引用。通过缓存这些引用,可以...
1. **代码分离**:XML布局将界面设计与业务逻辑分开,使得代码更易于理解和维护。 2. **工具支持**:IDE如Eclipse或图形设计工具如DroidDraw,支持直接通过GUI创建XML布局,简化了界面设计过程。 3. **可读性**:XML...
1.非常简单的一个类,用于在android开发中拖动View(可以是imageView或者viewGroup) 2.有两种构造方法,可以只监听一个图片,然后移动此图片。也可以将监听和移动的view分开。 3.里面的注释,若乱码,可能是编码...
需求要实现布局中为圆形图片,图片背景与图标分开且合并到一个ImageView。 二、具体实现: XML中布局中定义ImageView,关健设置两个参数 Android:backgroup(设置背景),Android:src(设置ImageVIew中图片),圆形...
首先,ScrollView是一个可滚动的布局容器,它可以包含单个直接子视图,并允许用户上下滚动。然而,ScrollView并不支持水平滑动,因此不适合用于实现横向切换屏幕的效果。 接着,ViewPager是Android提供的一个用于在...
接下来,只需要在布局文件中将 Button 控件的 Background 属性设置为刚刚创建的 XML 文件,即可实现自定义的 Button 按钮显示样式。代码如下: ```xml <Button android:id="@+id/button1" android:layout_width=...
1. **Android开发基础**:首先,你需要具备基本的Android应用开发技能,了解Java或Kotlin编程语言,掌握Android Studio IDE的使用,以及对AndroidManifest.xml、布局文件、Activity、Intent等基本概念的理解。...
代码和资源分开可以使得应用程序在运行时根据实际需要来组织UI。这样就可使得应用程序只需要编译一次,就可以支持不同的UI布局。这种特性使得应用程序在运行时可以适应不同的屏幕大小和密度,以及不同的国家和语言等...
熟悉其界面、布局以及如何创建新项目是入门的第一步。 2. **Java或Kotlin编程语言**: Android游戏通常使用Java或Kotlin编写。Java是Android平台的传统语言,而Kotlin现在已成为官方推荐的首选语言,因其简洁、安全...
Vue.js是一个轻量级的、声明式的JavaScript框架,而UniApp则在Vue的基础上,提供了更丰富的组件库和API,支持跨平台开发,包括iOS、Android、H5以及小程序等。 在创建“关于我们”页面时,通常我们需要考虑页面的...
7. **布局设计**: 使用XML文件定义游戏界面的布局,如活动(Activity)、视图(View)和布局(Layout)。这涉及对用户交互的处理,如按钮、触摸事件等。 8. **资源管理**: 游戏中的图片、音频、动画等资源需要妥善...
"界面仿bilibili"表明开发者在设计用户界面时参考了Bilibili的风格,这可能涉及到UI/UX设计原则,使用Android的布局组件如LinearLayout、RelativeLayout、ConstraintLayout等创建出类似于Bilibili的界面结构。...
1. **代码分离**:XML布局文件将界面设计与业务逻辑分开,使得开发者可以专注于代码的逻辑部分,而设计师可以专注于UI的美观和用户体验。 2. **可视化编辑**:XML布局可以配合集成开发环境(IDE)如Eclipse或...
----------------------------------- Android 编程基础 1 封面----------------------------------- Android 编程基础 2 开放手机联盟 --Open --Open --Open --Open Handset Handset Handset Handset Alliance ...
6. 源码结构:在Android项目中,代码通常按照模块化组织,比如将UI逻辑、业务逻辑和数据模型分开。在本压缩包中的"Android-Bank"可能包含了项目的各个源码文件,如MainActivity.java(主活动类)、布局文件XML、资源...
在Android原生API中,这两个组件是分开的,开发者需要分别处理。但这个"高大上"的源码可能将它们集成在一个统一的视图中,方便用户一次性选择日期和时间。 该源码可能包含以下关键知识点: 1. 自定义View:由于...
- **注重界面与逻辑的分离**:推荐使用MVVM或MVC架构模式,将界面和业务逻辑分开。 **2.4 界面构建** - **使用抽象的控件类**:例如,TabHost用于管理标签页,提高代码的可重用性和可维护性。 #### 三、Android...
- 按照模块化原则组织代码,如将网络请求、数据模型、UI组件等分开管理。 7. **测试与调试**: - 使用单元测试和UI测试确保功能的正确性,如JUnit和Espresso。 - 调试工具如Logcat用于输出日志,便于定位问题。 ...