Android ListView实现单选
来源:互联网 发布:直销奖金制度软件 编辑:程序博客网 时间:2024/06/15 02:02
1、布局文件
<ListView android:id="@+id/navi_list" android:layout_width="match_parent" android:layout_height="wrap_content" android:paddingLeft="8px" android:paddingRight="8px" />
2、ListView的适配器布局文件
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" android:background="@color/list_back" android:gravity="center" > <RadioButton android:id="@+id/navi_list_item_rb" style="@style/volume_fragment_rb_stytle" android:checked="false" android:clickable="false" android:focusable="false" /><ImageView android:id="@+id/navi_list_item_iv" android:layout_marginLeft="10px" android:layout_width="30px" android:layout_height="30px" android:background="@drawable/ic_launcher" /></LinearLayout>
3、主文件和适配器代码,下面是做语言适配时候的代码,供以后参考
public class LanguageFragment extends RTBaseFragment implements OnItemClickListener {private String TAG = "LanguageFragment";private ListView language_lv;private String[] languageItemString = null;//private final Locale[] languageLocalString = new Locale[]{Locale.SIMPLIFIED_CHINESE,Locale.TRADITIONAL_CHINESE,Locale.US,Locale.KOREA,Locale.JAPAN};private final Locale[] languageLocalString = new Locale[]{Locale.SIMPLIFIED_CHINESE,Locale.US};private List<LanguageInfo> mListLanguageInfo;private LanguageAdapter languageAdapter;private int selectPosition = 0;//默认显示第一个@Overrideprotected int setView() {return R.layout.language_fragment_layout;}@Overrideprotected void initView(View view) {language_lv = (ListView) view.findViewById(R.id.language_lv);//languageItemString = new String[]{mContext.getString(R.string.simplified_chinese),mContext.getString(R.string.traditional_chinese),//mContext.getString(R.string.language_english),mContext.getString(R.string.language_korea),mContext.getString(R.string.language_japan)};languageItemString = new String[]{mContext.getString(R.string.simplified_chinese),mContext.getString(R.string.language_english)};getListData();initLanguage();languageAdapter = new LanguageAdapter(mListLanguageInfo);language_lv.setAdapter(languageAdapter);}@Overrideprotected void initEvent() {language_lv.setOnItemClickListener(this);}@Overrideprotected void initData() {}@Overridepublic void onItemClick(AdapterView<?> parent, View view, int position, long id) {LanguageInfo mInfo = mListLanguageInfo.get(position);updateLanguage(mInfo);selectPosition = position;languageAdapter.notifyDataSetChanged();}public class LanguageAdapter extends BaseAdapter{private List<LanguageInfo> list;public LanguageAdapter(List<LanguageInfo> listDates){list = listDates;}@Overridepublic int getCount() {return list.size();}@Overridepublic Object getItem(int position) {return list.get(position);}@Overridepublic long getItemId(int position) {return position;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {ViewHolder viewHolder = null;if(convertView==null){convertView = LayoutInflater.from(mContext).inflate(R.layout.language_list_item, null);viewHolder = new ViewHolder();viewHolder.radioButton = (RadioButton) convertView.findViewById(R.id.language_list_item_rb);convertView.setTag(viewHolder);}else{viewHolder = (ViewHolder) convertView.getTag();}viewHolder.radioButton.setText(list.get(position).getLanguage());if(selectPosition == position){ viewHolder.radioButton.setChecked(true); } else{ viewHolder.radioButton.setChecked(false); }return convertView;}public class ViewHolder{public RadioButton radioButton;}}/** * 初始化本地语言 */private void initLanguage() {Locale currentLocale = getCurrentLocale(mContext);for (int i = 0; i < mListLanguageInfo.size(); i++) {Locale temp = mListLanguageInfo.get(i).getLocale();if(temp.equals(currentLocale)){//标记当前itemselectPosition = i;return;}}}/** * 获取数据 * @return */public void getListData() {mListLanguageInfo = new ArrayList<LanguageInfo>(); for (int i = 0; i < languageItemString.length; i++) { LanguageInfo mLanguageInfo = new LanguageInfo(); mLanguageInfo.setLanguage(languageItemString[i]); mLanguageInfo.setLocale(languageLocalString[i]); mListLanguageInfo.add(mLanguageInfo);}}/** * 更换语言 * @param info */public void updateLanguage(final LanguageInfo info){new Thread(new Runnable() {@Overridepublic void run() {// 更改系统语言UpdateLanguageUtils.updateLanguage(info.getLocale());}}).start();}/** * 获取当前系统语言 * @param mContext * @return */public Locale getCurrentLocale(Context mContext){Locale locale = mContext.getResources().getConfiguration().locale;return locale;}}4、所加权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/><uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_SETTINGS" /> <uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" />5、Utils相关代码
public class UpdateLanguageUtils {public static void updateLanguage(Locale locale) {try {Object objIActMag, objActMagNative;Class clzIActMag = Class.forName("android.app.IActivityManager");Class clzActMagNative = Class.forName("android.app.ActivityManagerNative");Method mtdActMagNative$getDefault = clzActMagNative.getDeclaredMethod("getDefault");objIActMag = mtdActMagNative$getDefault.invoke(clzActMagNative);Method mtdIActMag$getConfiguration = clzIActMag.getDeclaredMethod("getConfiguration");Configuration config = (Configuration) mtdIActMag$getConfiguration.invoke(objIActMag);config.locale = locale;Class clzConfig = Class.forName("android.content.res.Configuration");java.lang.reflect.Field userSetLocale = clzConfig.getField("userSetLocale");userSetLocale.set(config, true);Class[] clzParams = { Configuration.class };Method mtdIActMag$updateConfiguration = clzIActMag.getDeclaredMethod("updateConfiguration", clzParams);mtdIActMag$updateConfiguration.invoke(objIActMag, config);} catch (Exception e) {e.printStackTrace();}}}
阅读全文
1 0
- android listView实现单选
- Android ListView实现单选
- android-------listview 实现radiobutton 单选
- Android ListView 实现Item单选效果
- Android学习-ListView+ CheckBox实现单选
- Android ListView带CheckBox实现单选
- android ListView+CheckBox实现单选
- Android实现listView的单选功能
- Android ListView 自定义用法(ListView 实现单选功能)
- android 实现答题单选 listview嵌套listview
- listview实现单选
- Android ListView 使用checkbox 实现 单选、多选操作
- 【Android】ListView的单选、多选的实现
- Android实现LIstView条目单选和多选RadioButton
- android ListView中Checkbox实现单选,全选,全不选功能
- [Android实例] 重写ListView控件实现RadioButton单选
- android实现ListView中添加RaidoButton单选
- android实现ListView中动态添加RaidoButton单选
- 【翻译】使用 Visual Studio Team Service (VSTS) 上的 private git repository
- SPI总线的4种工作模式
- 用sar 命令生成CPU、内存和输入输出端口的报告
- C++ 提示 C4996 编译错误
- Java SAX 解析xml文件
- Android ListView实现单选
- Zookeep启动正常,却报错:Error contacting service. It is probably not running.
- Bookmarks of browser for mac
- win10系统镜像
- HDU1596-find the safest road
- Activity的四种启动模式
- 有关于tomcat服务器部署项目方式
- java同步控制
- NKOJ 2522 Sandy的卡片(差分数组+DP)