先是主 布局文件 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控件实现下拉刷新、分页加载、item点击 详情请看:http://blog.csdn.net/wild46cat/article/details/52682091
listview实现动态加载数据,值得学习
android控件应用 自定义的ListView控件,下拉刷新上拉加载更多,完整的资源应用
Android中ListView控件实现数据的异步分批加载
本文实例讲述了Android编程实现ListView中item部分区域添加点击事件功能。分享给大家供大家参考,具体如下: 需求如题目:Android listview中item部分区域添加点击事件,在一个界面显示了listview,但显示的内容分为...
ListView添加数据源,SimpleAdapter 重点是ListView事件处理,OnItemClickListener 如果和上下文菜单关联,点上下文菜单去操作item项 要在OnContextItemSelected方法里面得到 AdapterMenuInfo的对象,才能得到你选择...
android 的listview 内部item的布局包含checkbox控件时,会遇到常见的问题:1.checkbox无法选择;2.选择的checkbox后滑动listview内容时会checkbox选择的值会刷新成原来状态值(即没选中);3.选择listview所有checkbox...
ListView中添加左滑删除控件,支持单个滑动,也支持整体管理,修复状态切换之间的状态保持不对应等情形。
Android ListView里控件添加监听方法的实例详解 关于ListView,算是android中比较常见的控件,在ListView我们通常需要一个模板,这个模板指的不是住模块,而是配置显示在ListView里面的东西,今天做项目的时候发现...
listview加载多种布局文件,代码中用了三个简单布局,其他数量可自行添加
里要分享的是在一个listview中添加两个点击事件的解决办法,...这样的好处就是既不去掉ListView的OnItemClick事件,而且又添加了一个新的事件。详细文章见 http://blog.csdn.net/huihuangui/article/details/6768629
Android VideoPlayer 在滚动列表实现item视频播放(ListView控件和RecyclerView) jar 包
android自定义listview控件 可实现下拉刷新、下拉加载更多的功能,代码比较简单,内有详细注释和实现方法,方便初学者学习
VideoListPlayer实现了在列表控件(ListView, RecyclerView)中加载并播放视频,并支持滑动时自动播放/暂停的功能 利用该项目,可以轻松实现类似Instagram的视频播放功能 注意:最低支持API 14以上 效果预览 ...
开发项目过程中基本都会用到listView的下拉刷新和上滑加载更多,为了方便重写的ListView来实现下拉刷新,同时添加了上拉自动加载更多的功能。
主要介绍了Android实现ListView数据动态加载的方法,通过ListView控件绑定setOnScrollListener方法简单实现动态加载数据的功能,需要的朋友可以参考下
android的ListView上拉刷新下拉加载和列表头横向滚动(带表头与固定列)。 该demo是我结合网上的两个示例一个是上下拉刷新加载的ListView,一个是横向滚动带固定列和列表头.主要是自定义了两个控件(重写)ListView和...
Android为ListView添加圆角边框效果,安卓UI设计的例子,默认情况下ListView的外框是直角的,也就是大家习惯的样式,但为了美化更突出,或者与你的应用风格更吻合,有时候可能修饰成圆角边框,本例子就是实现了这一...
在做项目中碰见一个在listview子项里面长按,会显示不定数量的控件出来,于是我通过添加自定义view来实现,当然也可以通过listview动态添加gridview来实现.功能说明,长按显示新添加上去的自定义view,点击中间的...
当软件正在加载数据时,跳出动画,以示正在加载,附带小人快跑图片。 listview实现动态加载一行控件,点击按钮,动态加载。注解详细