先是主 布局文件 main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <ListView android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/list_view" ></ListView> </LinearLayout>
然后是3个不同控件的布局文件,先是 TextView
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="horizontal" android:padding="8dip" > <TextView android:id="@+id/monitor_list_left" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_centerVertical="true" > </TextView> <TextView android:id="@+id/monitor_list_right" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_centerVertical="true" > </TextView> </RelativeLayout>
然后是 Checkbox
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="horizontal" android:padding="8dip" > <TextView android:id="@+id/monitor_list_left" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_centerVertical="true" > </TextView> <CheckBox android:id="@+id/monitor_list_right" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_centerVertical="true" > </CheckBox> </RelativeLayout>
然后是 Turn On / Turn Off == ToggleButton 控件
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="horizontal" android:padding="8dip" > <TextView android:id="@+id/monitor_list_left" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_centerVertical="true" > </TextView> <ToggleButton android:id="@+id/monitor_list_right" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_centerVertical="true" /> </RelativeLayout>
然后是 ListItem.java 里面继承了 BaseAdapter 并在里面做了 position判断调用不同 布局 的
package t1.com; import java.util.HashMap; import java.util.List; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.CheckBox; import android.widget.TextView; import android.widget.ToggleButton; public class ListItem extends BaseAdapter { private List<HashMap<String,String>> list; private Context context; //构造函数 public ListItem (Context context,List<HashMap<String,String>> list){ this.context = context; this.list = list; } public int getCount() { // TODO Auto-generated method stub return list.size(); } public Object getItem(int arg0) { // TODO Auto-generated method stub return list.get(arg0); } public long getItemId(int position) { // TODO Auto-generated method stub return position; } public View getView(int position, View convertView, ViewGroup parent) { // TODO Auto-generated method stub LayoutInflater mInflater = LayoutInflater.from(context); View view = null; switch (position) { case 0: view = mInflater.inflate(R.layout.list_textview, null); TextView title = (TextView)view.findViewById(R.id.monitor_list_left); title.setText("编号"); TextView value = (TextView)view.findViewById(R.id.monitor_list_right); value.setText(list.get(position).get("data")); break; case 1: view = mInflater.inflate(R.layout.list_turn, null); TextView title2 = (TextView)view.findViewById(R.id.monitor_list_left); title2.setText("是否开启"); ToggleButton value2 = (ToggleButton)view.findViewById(R.id.monitor_list_right); if(list.get(position).get("data").equals("1")){ value2.setChecked(true); }else{ value2.setChecked(false); } break; case 2: view = mInflater.inflate(R.layout.list_checkbox, null); TextView title3 = (TextView)view.findViewById(R.id.monitor_list_left); title3.setText("是否结婚"); CheckBox value3 = (CheckBox)view.findViewById(R.id.monitor_list_right); if(list.get(position).get("data").equals("1")){ value3.setChecked(true); }else{ value3.setChecked(false); } break; default: break; } return view; } }
最后是 主Activity文件 T1Activity.java
package t1.com; import java.util.ArrayList; import java.util.HashMap; import android.app.Activity; import android.os.Bundle; import android.widget.ListView; public class T1Activity extends Activity { /** Called when the activity is first created. */ private ListView listVIew; ArrayList<HashMap<String, String>> listItem = new ArrayList<HashMap<String, String>>(); @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); listVIew = (ListView)findViewById(R.id.list_view); String data[] = {"33","1","结婚设置","0"}; for(int i = 0;i<data.length;i++){ HashMap<String, String> map = new HashMap<String, String>(); map.put("data", data[i]); listItem.add(map); } ListItem listItemAdapter = new ListItem(T1Activity.this, listItem); listVIew.setAdapter(listItemAdapter); } }
分割 布局
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="horizontal" android:paddingLeft="8dip" android:paddingRight="8dip" android:paddingTop="4dip" android:paddingBottom="4dip" android:background="#E3E3E3" > <TextView android:id="@+id/monitor_list_left" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textSize="10dp" > </TextView> </RelativeLayout>
** 如果空间是EditText 时不能获取焦点的问题
先设置litView 属性 android:scrollbars="none"
然后给 listVIew 的 父 层级 添加一个 LinearLayout , 再在外面添加一个 ScrollView , 遇到 listview 无法显示完全的办法是 给他的 layout_height 写死
** 得到 ListView 中 各个控件中的值
/* for (int i = 0; i < listVIew.getChildCount(); i++) { LinearLayout ll = (LinearLayout)listVIew.getChildAt(i);// 获得子级 CheckBox chkone = (CheckBox) ll.findViewById(R.id.chkone);// 从子级中获得控件 System.out.println("chkone.isChecked():----------->"+chkone.isChecked()); } */ RelativeLayout ll = (RelativeLayout)listVIew.getChildAt(0);// 获得子级 CheckBox chkone = (CheckBox) ll.findViewById(R.id.monitor_list_right);// 从子级中获得控件 if(chkone.isChecked()){ System.out.println("点击了"); }else{ System.out.println("没点击"); }
注意 RelativeLayout ll = (RelativeLayout)listVIew.getChildAt(0); 需要根据 子 布局的 不同 布局方式 定义 RelativeLayout 或 LinearLayout
** 关于处理 刷新 listView 置顶问题 使用 notifyDatasetchanged() 在之前先 将 listItemAdapter 里面的构造函数中的变量 重新赋值
if(!doFir){ listItemAdapter = new LoginIndexList(LoginIndex.this, listItem,1+Integer.parseInt(localDeviceArray[99])); listVIew.setAdapter(listItemAdapter); }else{ listItemAdapter.list = listItem; listItemAdapter.cut = 1+Integer.parseInt(localDeviceArray[99]); listItemAdapter.notifyDataSetChanged(); } doFir = true;
相关推荐
### Android ListView 控件基本用法详解 #### 一、引言 在Android应用开发中,经常需要展示大量的数据项,并且这些数据项通常具有相似的结构。为了有效地处理这类需求,Android提供了一种非常有用的控件——`...
在Android开发中,ListView是应用界面中非常常见的一种控件,它用于展示大量数据的列表形式,具有良好的滚动性能和可扩展性。本教程将详细讲解如何在安卓手机上使用ListView控件,从基础到进阶,通过四个案例来帮助...
在Android应用开发中,ListView是一种常用的控件,用于展示大量数据列表。它的可滚动特性使得它在各种场景下都非常实用,比如展示联系人、菜单项等。然而,仅仅使用ListView来展示列表数据并不足够,很多时候我们...
在Android开发中,ListView是常用的一种控件,用于展示大量数据列表。为了提升用户体验和界面设计的美观性,我们常常需要对ListView进行定制化,包括设置边框和实现圆角效果。本文将深入探讨如何在Android中实现...
Android ListView 控件基本用法 Android ListView 控件是一种基础控件,主要用于展示列表数据。在 Android 开发中,ListView 控件是最常用的控件之一。下面我们将详细介绍 Android ListView 控件的基本用法。 一、...
本资料"Android使用ListView实现一个高性能无限层级显示的树形控件"旨在教你如何利用ListView创建一个可以处理无限层级的树形控件。 首先,我们需要理解ListView的工作原理。ListView是一个视图容器,它通过复用...
在Android开发中,ListView是一个非常重要的视图组件,它允许我们显示大量的数据并进行滚动操作。本示例将深入探讨如何在Android中自定义ListView,包括它的创建、数据绑定以及实现一些视觉效果。 首先,创建一个...
在Android开发中,ListView是...通过以上方式,开发者可以灵活地为Android ListView的子控件设置各种事件监听,以满足不同应用场景的需求。理解并掌握这些监听机制,对于开发高效且用户体验良好的Android应用至关重要。
在Android开发中,ListView是常用的一种控件,用于展示大量数据列表。`下拉刷新`和`上拉加载`功能的实现,极大地提升了用户体验,让用户能够实时获取到最新的数据。本篇文章将深入探讨如何在ListView中实现这两种...
在Android开发中,ListView是一...综上,"ListView实现动态加载"涵盖了Android开发中的数据适配、视图复用、异步加载、滚动监听、内存优化等多个重要知识点。熟练掌握这些技巧,对于构建流畅、高效的列表界面至关重要。
### Android-ListView中嵌套(ListView)控件兼容问题 #### 背景与问题描述 在Android开发中,有时我们需要在`ListView`中嵌套另一个`ListView`以实现更复杂的用户界面设计。然而,在实际操作过程中可能会遇到一些...
然而,为了提供更好的用户体验,我们经常需要对ListView进行自定义,添加一些高级功能,如下拉刷新、分页加载以及Item点击事件处理。这篇内容将详细介绍如何在Android中实现这些功能。 一、下拉刷新 下拉刷新功能...
在Android开发中,ListView是一个非常重要的控件,用于展示大量数据列表。本教程将深入讲解如何使用ListView,结合自定义适配器以及解决Out-Of-Memory(OOM)问题。 首先,`ListView`是一个可滚动的视图,它能够...
在Android开发中,ListView是一种非常常见的控件,用于展示大量数据列表。它的高效性和可滚动性使得它在处理数据展示时十分受欢迎。本篇将详细探讨如何实现ListView的上拉加载(Load More)和下拉刷新(Pull to ...
在Android开发中,ListView是一个非常重要的控件,它允许开发者在一个垂直滚动的列表中展示大量数据。本篇文章将深入探讨ListView的基本用法、工作原理以及优化策略,旨在帮助你掌握这个核心组件。 **1. ListView的...
在Android开发中,ListView是一种非常常用的控件,用于展示大量数据列表。自定义ListView不仅可以满足基本的显示需求,还能实现更多的交互效果,如下拉刷新和上拉加载更多功能。这两种功能在现今的移动应用中非常...
在Android应用开发中,ListView控件是至关重要的一个部分,特别是在构建新闻类、信息类应用时,它能够有效地展示大量的列表数据,使用户能够轻松滚动浏览。本讲将深入探讨ListView的基本概念、工作原理以及如何在...
在Android开发中,ListView是常用的一种控件,用于展示大量数据列表。然而,当这个列表包含图片时,如果直接在主线程中加载,会导致UI卡顿,用户体验下降。因此,我们需要采用异步加载图片的方式,同时为了优化性能...
在Android开发中,ListView是一种非常常见的控件,用于展示大量数据列表。然而,有时我们不仅需要展示单一列表,还可能需要实现类似表格的效果,比如显示多列数据。本篇文章将详细讲解如何在Android中利用ListView...
当ListView加载时,它不会一次性渲染所有条目,而是只渲染可视范围内的条目,这就是所谓的“视图复用”(View Recycling)。这一策略大大提高了ListView的性能,但同时也要求开发者注意避免因视图复用导致的显示问题...