listView单选实现的两种方式
来源:互联网 发布:清华计算机 知乎 编辑:程序博客网 时间:2024/06/05 04:28
1. listview有个属性
android:choiceMode ="singleChoice" 表示选择一个 android:choiceMode ="multipleChoice"表示选择两个
2. 布局中如下
<Button android:id="@+id/button" android:layout_width= "match_parent" android:layout_height= "wrap_content" android:text= "点击显示获取数字" android:padding="10dp" /> <ListView android:id="@+id/listView" android:layout_below= "@+id/button" android:layout_width= "match_parent" android:layout_height= "match_parent" android:choiceMode="singleChoice" > </ListView>
3. java代码中为listview设置adapter,这里用默认的
private String[] GENRES = { "11", "22" , "33" , "44" , "55" , "66" , "77", "88" , "99" , "00" }; listView.setAdapter( new ArrayAdapter<String>( this, android.R.layout.simple_list_item_single_choice , GENRES ));
simple_list_item_single_choice里的控件是CheckedTextView,其实是一个实现了checkable接口的textView
4.此时listView就有单选效果了,截图如下:
5. 如何获取已经选中的数据呢?这里单选或多选的数据会被控件记住,当我们点击显示获取数字的按钮时,我们用代码获取选中的信息,并显示
int position = listView .getCheckedItemPosition(); // 即获取选中位置 if(ListView.INVALID_POSITION != position){ Toast.makeText(MainActivity.this, groups.get(position), 0).show(); }
自定义组合布局,实现checkable接口。
public class SingleView extends LinearLayout implements Checkable { private TextView mText; private CheckBox mCheckBox; public SingleView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); initView(context); } public SingleView(Context context, AttributeSet attrs) { super(context, attrs); initView(context); } public SingleView (Context context) { super(context); initView(context); } private void initView(Context context){ // 填充布局 LayoutInflater inflater = LayoutInflater.from(context); View v = inflater.inflate(R.layout.item_single_layout , this, true); mText = (TextView) v.findViewById(R.id. title); mCheckBox = (CheckBox) v.findViewById(R.id. checkbox); } @Override public void setChecked( boolean checked) { mCheckBox.setChecked(checked); } @Override public boolean isChecked() { return mCheckBox.isChecked(); } @Override public void toggle() { mCheckBox.toggle(); } public void setTitle(String text){ mText.setText(text); } }
activity中试下代码:
public class MainActivity extends Activity { private ArrayList<String> groups; private ListView listView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout. activity_main); listView = (ListView) findViewById(R.id. listView); groups = new ArrayList<String>(); groups.add( "11"); groups.add( "22"); groups.add( "33"); groups.add( "44"); groups.add( "55"); groups.add( "66"); groups.add( "77"); groups.add( "88"); groups.add( "99"); groups.add( "00"); SingleAdapter singleAdapter = new SingleAdapter(); listView.setAdapter(singleAdapter); Button button = (Button) findViewById(R.id. button); button.setOnClickListener( new OnClickListener() { @Override public void onClick(View v) { PickNum(); } }); } private void PickNum() { int position = listView.getCheckedItemPosition(); if (ListView. INVALID_POSITION != position) { Toast. makeText(MainActivity.this, groups.get(position), 0).show(); } } private class SingleAdapter extends BaseAdapter { @Override public int getCount() { return groups.size(); } @Override public Object getItem( int position) { // TODO Auto-generated method stub return null; } @Override public long getItemId( int position) { // TODO Auto-generated method stub return 0; } @Override public View getView( final int position, View convertView, ViewGroup parent) { final SingleView singleView = new SingleView(MainActivity.this ); singleView.setTitle( groups.get(position)); return singleView; } } }
效果:
如果要替换默认checkbox的图标显示,设置checkbox的button属性即可。
1 0
- listView单选实现的两种方式
- listview中的radiobutton实现单选的两种方式而且可以控制另一控件button的是否可见
- 单例的两种实现方式
- ListView单选效果(最简单的实现方式)
- 单例模式的两种较好的实现方式
- 单例模式的两种实现方式及区别
- 【java】单例模式的两种实现方式
- ios单例模式实现的两种方式
- 单例模式的两种实现方式
- 单例模式的两种实现方式
- 单例模式--Singleton的两种实现方式
- Java单例设计模式的两种实现方式
- 单例模式两种实现方式
- 单例模式的两种方式
- 单例模式的两种方式
- 创建单例的两种方式
- 单例模式的两种方式
- 单例的两种创建方式
- 选择之后,再返回来还是之前选择的
- Android 的Otto插件的使用
- LeetCode之双指针(3)
- java开发记录
- 印刷行业合版BOM全阶维护示例
- listView单选实现的两种方式
- 4029: [HEOI2015]定价 贪心
- Android的UI底层是用CPU绘图的还是GPU绘图的呢?以及surfaceview,window,普通view是如何实现的?
- 5-19 支票面额
- Smart210一键部署运行qt程序
- 好用的jquery分页插件 kkpager
- tomcat启动不了,点击startup.bat一闪而过&手动打开tomcat可以访问,eclipse打开tomcat,浏览器不能访问
- php获取客户端真实IP
- SpringMVC搭配Freemarker实例解析