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

来源:互联网 发布:java毕业论文题目 编辑:程序博客网 时间:2024/06/12 01:39
浮生偷得半日闲,等接口定义的过程中,重新复习下adapter+listview实现单选的方法

主界面

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    tools:context="com.example.locallistviewradiobutton.MainActivity" >    <ListView        android:id="@+id/lv_radiobutton"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:divider="@null">            </ListView></RelativeLayout>


 

activity_listview.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="fill_parent"    android:layout_height="match_parent"                android:gravity="center"          android:orientation="vertical" >        <LinearLayout         android:id="@+id/ll_rg"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:orientation="horizontal"     android:background="#C6C6C6">        <RadioButton        android:id="@+id/rb_select"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_gravity="center"        android:focusable="false"/>                  <TextView        android:id="@+id/tv_name"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_gravity="center"        android:text="name"        android:textSize="20sp"/>                                <ImageView          android:id="@+id/iv_card"          android:layout_width="wrap_content"          android:layout_height="wrap_content"          android:scaleType="centerInside"          android:layout_marginLeft="20dp"          android:layout_marginRight="20dp"          android:layout_marginTop="2dp"          android:layout_marginBottom="2dp"          android:layout_gravity="left"          android:adjustViewBounds="true"          android:src="@drawable/ic_launcher" />        </LinearLayout>        <View        android:layout_width="fill_parent"        android:layout_height="10dp"        android:background="#ffffff" /></LinearLayout>


 

MainActivity.java

package com.example.locallistviewradiobutton;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.widget.AdapterView;import android.widget.ListView;import android.widget.AdapterView.OnItemClickListener;public class MainActivity extends Activity {    private ListView lv_radiobutton;    private RBlistAdapter adapter;    private String[] names = new String[] { "a","b","c","d","e" };    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);                lv_radiobutton = (ListView) findViewById(R.id.lv_radiobutton);        adapter = new RBlistAdapter(this, names);        lv_radiobutton.setAdapter(adapter);                //点击一行任意位置都能保证radiobutton选中        lv_radiobutton.setOnItemClickListener(new myOnItemClickListener());            }        private class myOnItemClickListener implements OnItemClickListener {        @Override        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {            adapter.index = position;//获取位置并传给adapter中的index(public变量)            adapter.notifyDataSetChanged();        }    }    public void onBackPressed() {        // TODO Auto-generated method stub        super.onBackPressed();    }}


 

RBlistAdapter.java

package com.example.locallistviewradiobutton;import android.widget.BaseAdapter;import android.annotation.SuppressLint;import android.content.Context;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.CompoundButton;import android.widget.CompoundButton.OnCheckedChangeListener;import android.widget.RadioButton;import android.widget.TextView;import android.widget.Toast;public class RBlistAdapter extends BaseAdapter{    private LayoutInflater inflater;    private String[] picspecies;    private viewHolder holder;    // 标记用户当前选择的那一个,默认为第一个:(0)    public int index = 0;    private Context c;    public RBlistAdapter(Context c, String[] picspecies) {        super();        this.c = c;        this.picspecies = picspecies;        inflater = LayoutInflater.from(c);    }    @Override    public int getCount() {        return picspecies.length;    }        @Override    public Object getItem(int position) {        return null;    }    @Override    public long getItemId(int position) {        return 0;    }    @SuppressLint("InflateParams") @Override    public View getView(final int position, View convertView, ViewGroup parent) {                holder = new viewHolder();        if (convertView == null) {            convertView = inflater.inflate(R.layout.activity_listview, null);            holder.nameTxt = (TextView) convertView.findViewById(R.id.tv_name);            holder.selectBtn = (RadioButton) convertView.findViewById(R.id.rb_select);            convertView.setTag(holder);        } else {            holder = (viewHolder) convertView.getTag();        }        holder.nameTxt.setText(picspecies[position]);        holder.selectBtn                .setOnCheckedChangeListener(new OnCheckedChangeListener() {                    @Override                    public void onCheckedChanged(CompoundButton buttonView,                            boolean isChecked) {                        if (isChecked) {                            Toast.makeText(c, "您选择的是:" + picspecies[position],                                    Toast.LENGTH_SHORT).show();                            index = position;                            notifyDataSetChanged();                        }                    }                });        if (index == position) {// 选中的条目和当前的条目是否相等            holder.selectBtn.setChecked(true);        } else {            holder.selectBtn.setChecked(false);        }        return convertView;    }    public class viewHolder {        public TextView nameTxt;        public RadioButton selectBtn;    }}


 

代码下载

0 0
原创粉丝点击