本地数据下,radiobutton和图片组合,利用adapter+listview进行单选

浮生偷得半日闲,等接口定义的过程中,重新复习下adapter+listview实现单选的方法

主界面

 1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 2     xmlns:tools="http://schemas.android.com/tools"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent"
 5     android:paddingBottom="@dimen/activity_vertical_margin"
 6     android:paddingLeft="@dimen/activity_horizontal_margin"
 7     android:paddingRight="@dimen/activity_horizontal_margin"
 8     android:paddingTop="@dimen/activity_vertical_margin"
 9     tools:context="com.example.locallistviewradiobutton.MainActivity" >
10
11     <ListView
12         android:id="@+id/lv_radiobutton"
13         android:layout_width="match_parent"
14         android:layout_height="wrap_content"
15         android:divider="@null">
16
17     </ListView>
18
19 </RelativeLayout>

activity_listview.xml

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     xmlns:tools="http://schemas.android.com/tools"
 4     android:layout_width="fill_parent"
 5     android:layout_height="match_parent"
 6     android:gravity="center"
 7     android:orientation="vertical" >
 8
 9     <LinearLayout
10         android:id="@+id/ll_rg"
11         android:layout_width="fill_parent"
12         android:layout_height="wrap_content"
13         android:orientation="horizontal"
14     android:background="#C6C6C6">
15
16     <RadioButton
17         android:id="@+id/rb_select"
18         android:layout_width="wrap_content"
19         android:layout_height="wrap_content"
20         android:layout_gravity="center"
21         android:focusable="false"/>
22
23     <TextView
24         android:id="@+id/tv_name"
25         android:layout_width="wrap_content"
26         android:layout_height="wrap_content"
27         android:layout_gravity="center"
28         android:text="name"
29         android:textSize="20sp"/>
30
31     <ImageView
32           android:id="@+id/iv_card"
33           android:layout_width="wrap_content"
34           android:layout_height="wrap_content"
35           android:scaleType="centerInside"
36           android:layout_marginLeft="20dp"
37           android:layout_marginRight="20dp"
38           android:layout_marginTop="2dp"
39           android:layout_marginBottom="2dp"
40           android:layout_gravity="left"
41           android:adjustViewBounds="true"
42           android:src="@drawable/ic_launcher" />
43
44     </LinearLayout>
45
46     <View
47         android:layout_width="fill_parent"
48         android:layout_height="10dp"
49         android:background="#ffffff" />
50
51 </LinearLayout>

MainActivity.java

 1 package com.example.locallistviewradiobutton;
 2
 3 import android.app.Activity;
 4 import android.os.Bundle;
 5 import android.view.View;
 6 import android.widget.AdapterView;
 7 import android.widget.ListView;
 8 import android.widget.AdapterView.OnItemClickListener;
 9
10
11 public class MainActivity extends Activity {
12     private ListView lv_radiobutton;
13     private RBlistAdapter adapter;
14     private String[] names = new String[] { "a","b","c","d","e" };
15
16     @Override
17     protected void onCreate(Bundle savedInstanceState) {
18         super.onCreate(savedInstanceState);
19         setContentView(R.layout.activity_main);
20
21         lv_radiobutton = (ListView) findViewById(R.id.lv_radiobutton);
22         adapter = new RBlistAdapter(this, names);
23         lv_radiobutton.setAdapter(adapter);
24
25         //点击一行任意位置都能保证radiobutton选中
26         lv_radiobutton.setOnItemClickListener(new myOnItemClickListener());
27
28     }
29
30     private class myOnItemClickListener implements OnItemClickListener {
31         @Override
32         public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
33             adapter.index = position;//获取位置并传给adapter中的index(public变量)
34             adapter.notifyDataSetChanged();
35         }
36     }
37     public void onBackPressed() {
38         // TODO Auto-generated method stub
39         super.onBackPressed();
40     }
41
42 }

RBlistAdapter.java

 1 package com.example.locallistviewradiobutton;
 2
 3 import android.widget.BaseAdapter;
 4 import android.annotation.SuppressLint;
 5 import android.content.Context;
 6 import android.view.LayoutInflater;
 7 import android.view.View;
 8 import android.view.ViewGroup;
 9 import android.widget.CompoundButton;
10 import android.widget.CompoundButton.OnCheckedChangeListener;
11 import android.widget.RadioButton;
12 import android.widget.TextView;
13 import android.widget.Toast;
14
15 public class RBlistAdapter extends BaseAdapter{
16     private LayoutInflater inflater;
17     private String[] picspecies;
18     private viewHolder holder;
19     // 标记用户当前选择的那一个,默认为第一个:(0)
20     public int index = 0;
21     private Context c;
22
23     public RBlistAdapter(Context c, String[] picspecies) {
24         super();
25         this.c = c;
26         this.picspecies = picspecies;
27         inflater = LayoutInflater.from(c);
28     }
29
30     @Override
31     public int getCount() {
32         return picspecies.length;
33     }
34
35     @Override
36     public Object getItem(int position) {
37         return null;
38     }
39
40     @Override
41     public long getItemId(int position) {
42         return 0;
43     }
44
45     @SuppressLint("InflateParams") @Override
46     public View getView(final int position, View convertView, ViewGroup parent) {
47
48         holder = new viewHolder();
49         if (convertView == null) {
50             convertView = inflater.inflate(R.layout.activity_listview, null);
51             holder.nameTxt = (TextView) convertView.findViewById(R.id.tv_name);
52             holder.selectBtn = (RadioButton) convertView.findViewById(R.id.rb_select);
53             convertView.setTag(holder);
54         } else {
55             holder = (viewHolder) convertView.getTag();
56         }
57
58         holder.nameTxt.setText(picspecies[position]);
59         holder.selectBtn
60                 .setOnCheckedChangeListener(new OnCheckedChangeListener() {
61
62                     @Override
63                     public void onCheckedChanged(CompoundButton buttonView,
64                             boolean isChecked) {
65                         if (isChecked) {
66                             Toast.makeText(c, "您选择的是:" + picspecies[position],
67                                     Toast.LENGTH_SHORT).show();
68                             index = position;
69                             notifyDataSetChanged();
70                         }
71                     }
72                 });
73
74         if (index == position) {// 选中的条目和当前的条目是否相等
75             holder.selectBtn.setChecked(true);
76         } else {
77             holder.selectBtn.setChecked(false);
78         }
79         return convertView;
80     }
81
82     public class viewHolder {
83         public TextView nameTxt;
84         public RadioButton selectBtn;
85     }
86
87 }

代码下载

时间: 2024-11-15 00:24:44

本地数据下,radiobutton和图片组合,利用adapter+listview进行单选的相关文章

Android下拉刷新库,利用viewdraghelper实现,集成了下拉刷新,底部加载更多,数据初始加载显示loading等功能

项目Github地址:https://github.com/sddyljsx/pulltorefresh Android下拉刷新库,利用viewdraghelper实现. 集成了下拉刷新,底部加载更多,以及刚进入加载数据的loadview.包括了listview与gridview的改写. 效果1: 效果2: 效果3: 效果4: 效果5: 使用说明: imageList=(ListView)findViewById(R.id.image_list); imageAdapter=new ImageA

框架 day50 BOS项目 4 批量导入(ocupload插件,pinyin4J)/POI解析Excel/Combobox下拉框/分区组合条件分页查询(ajax)/分区数据导出(Excel)

知识点: 批量导入(ocupload插件,pinyin4J /POI解析Excel(apache POI) /区域分页查询 /Combobox下拉框 /分区组合条件分页查询(ajax) /分区数据导出(Excel下载) BOS项目笔记第4天 1.    区域批量导入功能 *Ajax不支持文件上传. *上传并且不刷新上传页面原理: Target到一个0,0,0的隐藏iframe里,造成一个没有刷新的假象 <form target="myIframe" action="ab

自动完成下拉框 Select2 关键字搜索的实例(本地数据与异步获取)

最终效果 首先我们要有一个基础的文本框 <input name="test" type="hidden" id="userSelect" style="width: 600px" value="上海^漳州" /> 使用本地数据的写法 $('#userSelect').select2({ placeholder : "请输入", minimumInputLength : 1,

iOS本地数据存取,这里就够了

iOS本地数据存取,看这里就够了 应用沙盒 每个iOS应用都有自己的应用沙盒(应用沙盒就是文件系统目录),与其他文件系统隔离.应用必须待在自己的沙盒里,其他应用不能访问该沙盒 应用沙盒的文件系统目录,如下图所示(假设应用的名称叫Layer) 应用沙盒的文件系统目录 应用沙盒结构分析 应用程序包:(上图中的Layer)包含了所有的资源文件和可执行文件 Documents:保存应用运行时生成的需要持久化的数据,iTunes同步设备时会备份该目录.例如,游戏应用可将游戏存档保存在该目录 tmp:保存应

使用 Qt 获取 UDP 数据并显示成图片

一个项目,要接收 UDP 数据包,解析并获取其中的数据,主要根据解析出来的行号和序号将数据拼接起来,然后将拼接起来的数据(最重要的数据是 R.G.B 三个通道的像素值)显示在窗口中.考虑到每秒钟要接收的数据包的数量较大,Python 的处理速度可能没有那么快,而且之前对 Qt 也比较熟悉了,所以用Qt 作为客户端接收处理数据包,用近期学习的 Python 模拟发送数据包. 数据格式 在 TCP/IP 协议中,UDP 数据包的大小是由限制的,因此用 UDP 传输数据时,还要在 UDP 层上再封装一

重写TreeView,多层级节点下批量显示图片,图片支持缩略图和文件名列表切换,支持调用者动态匹配选中,支持外界拖入图片并添加到对应节点下

原文:重写TreeView,多层级节点下批量显示图片,图片支持缩略图和文件名列表切换,支持调用者动态匹配选中,支持外界拖入图片并添加到对应节点下 1.先看下整体效果 2.前端代码 1 <UserControl x:Class="iPIS.UI.Base.Tree.ImageTreeControl" 2 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 3 xmlns:x=&quo

读取多张MNIST图片与利用BaseEstimator基类创建分类器

读取多张MNIST图片 在读取多张MNIST图片之前,我们先来看下读取单张图片如何实现 每张数字图片大小都为28 * 28的,需要将数据reshape成28 * 28的,采用最近邻插值,如下 def plot_digit(data): img = data.reshape(28,28) plt.imshow(img,cmap=matplotlib.cm.binary,interpolation='nearest') plt.axis('off') import matplotlib.pyplot

本地数据持久化方法

http://www.jianshu.com/p/86ea6da905cf http://www.cocoachina.com/industry/20130328/5908.html 1. 属性列表(plist)NSUserDefaults 属性列表是一种明文的轻量级存储方式,其存储格式有多种,最常规格式为XML格式.在我们创建一个新的项目的时候,Xcode会自动生成一个info.plist文件用来存储项目的部分系统设置.plist只能用数组(NSArray)或者字典(NSDictionary)

大数据下的数据分析平台架构zz

转自http://www.cnblogs.com/end/archive/2012/02/05/2339152.html 随着互联网.移动互联网和物联网的发展,谁也无法否认,我们已经切实地迎来了一个海量数据的时代,数据调查公司IDC预计2011年的数据总量将达到1.8万亿GB,对这些海量数据的分析已经成为一个非常重要且紧迫的需求. 作为一家互联网数据分析公司,我们在海量数据的分析领域那真是被“逼上梁山”.多年来在严苛的业务需求和数据压力下,我们几乎尝试了所有可能的大数据分析方法,最终落地于Had