Android的ListPreference手动绑定数据

Preference给我们一般设置带来很多方便,我们只要稍微设置下XML选项能满足我们大部分需求,项目中有需求用数据库的数据填充到ListPreference的弹出数据中,方法如下:

public class EditPreferences extends PreferenceActivity {

public static final String SELECTED_TARGET_KEY = "SelectedTargetKey";
public static final String NO_SELECTION  = "0";

private TargetDbAdapter mDbHelper;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setPreferenceScreen(createPreferenceHierarchy());
}

private PreferenceScreen createPreferenceHierarchy() {
PreferenceScreen root = getPreferenceManager().createPreferenceScreen(this);
PreferenceCategory dialogBasedPrefCat = new PreferenceCategory(this);
dialogBasedPrefCat.setTitle(R.string.pref_cat_title);
root.addPreference(dialogBasedPrefCat);

//builds list from DB
mDbHelper = new TargetDbAdapter(this);
mDbHelper.open();
Cursor c = mDbHelper.fetchAllNotes();
startManagingCursor(c);

int count = c.getCount();
CharSequence[] entries = new CharSequence[count];
CharSequence[] entryValues = new CharSequence[count];

c.moveToFirst();
for(int i=0; i<count; i++) {
entries[i] = c.getString(c.getColumnIndexOrThrow(TargetDbAdapter.KEY_TITLE));
entryValues[i] = c.getString(c.getColumnIndexOrThrow(TargetDbAdapter.KEY_ROWID));
c.moveToNext();
}

ListPreference targets = new ListPreference(this);
targets.setEntries(entries);
targets.setEntryValues(entryValues);
targets.setDefaultValue(NO_SELECTION);
targets.setDialogTitle(R.string.pref_dialog_title);
targets.setKey(SELECTED_TARGET_KEY);
targets.setTitle(R.string.pref_title);
targets.setSummary(R.string.pref_summary);
dialogBasedPrefCat.addPreference(targets);

//add other preference screens

return root;
}

}
时间: 2024-07-28 19:50:59

Android的ListPreference手动绑定数据的相关文章

排序-asp.net repeater 绑定数据后 怎么改变显示的顺序

问题描述 asp.net repeater 绑定数据后 怎么改变显示的顺序 <ul style=" margin-left:20px"> <asp:Repeater ID="rep_data" runat="server"> <ItemTemplate> <li ><p ><span><%# Eval("data").ToString()%>:

Android实现Activities之间进行数据传递的方法

  Android实现Activities之间进行数据传递的方法 本文实例讲述了Android实现Activities之间进行数据传递的方法.分享给大家供大家参考.具体分析如下: 首先,先说明一下Activity的启动及关闭: 1. startActivity(Intent intent); 启动Activity finish(); 结束当前Activity 2. startActivityForResult(Intent intent, int requestCode); 以指定的请求码req

fragment 筛选-android Viewpager中fragment筛选数据问题

问题描述 android Viewpager中fragment筛选数据问题 目前结构是actionbar中有个筛选按钮,实现类型筛选数据,整个外层是fragment,然后里面是viewpager+fragment组合形式,两个页面切换,要求点击筛选选择数据类型控制当前页的数据筛选? 我尝试过的方式: 在每个fragment中都调用actionbar中的筛选点击事件,进行数据筛选,但是发现只有第二个能筛选,在第一个页面筛选没反应而且这个时候第二个页面数据会筛选,经检查发现一直是在调用第二个页面的方

安卓-adapter无法绑定数据,get(poiniton)无法获取到数据

问题描述 adapter无法绑定数据,get(poiniton)无法获取到数据 要实现一个像通讯录一样的listview public class MyDistributor2Activity extends BaseActivity { @InjectView(R.id.my_distributor_lv) PinnedHeaderNoScrollListViewTest distributor_lv; LayoutInflater layoutInflater; MyDistributor2

DataGridViewComboBoxColumn 重新绑定数据表

问题描述 DataGridViewComboBoxColumn初始已经绑定一张表,现在这张表的数据修改了,要重新绑定,但是数据没有变化.例如:初始化时,绑定数据privatevoidfrm_Load(objectsender,EventArgse){setPublicInfo();}绑定的数据函数privatevoidsetPublicInfo(){//dt是得到的数据表this.cTime_sect.DataSource=dt;this.cTime_sect.DisplayMember="na

Android实现Activities之间进行数据传递的方法_Android

本文实例讲述了Android实现Activities之间进行数据传递的方法.分享给大家供大家参考.具体分析如下: 首先,先说明一下Activity的启动及关闭: 1. startActivity(Intent intent);  启动Activity        finish();  结束当前Activity 2. startActivityForResult(Intent intent, int requestCode);  以指定的请求码requestCode启动Activity fini

使用XML为列表控件绑定数据

了解使用XML为列表控件绑定数据的各种不同的方法.介绍在web开发项目中,我们需要经常写一些代码从数据源读取动态数据到列表控件中.在经典ASP时期,这是一件相对比较困难的任务.例如,我们必须查询数据库,找回 RecordSet 并且在手动创建HTML标签时还要重述 RecordSet .现在在ASP.NET中,你做同样的事情有了更好的办法.此外,除了用数据库作为数据源,你还可以使用各种数据源,比如XML文件.哪一个更好呢?这会在性能.适应性.可靠性.易配置性.安全等方面引起争论.在这里,我不想讨

gridview 行是固定的,如何绑定数据呢

问题描述 gridviewLevelcol1col2col312345table,col0,col1,col2,col3c1c2c3c4c5这种情况下,我需要匹配gridviewlevel和col0,然后绑定到对应的row.如何能实现呢? 解决方案 解决方案二:控件所绑定的数据,是内存中的数据,跟你的数据库没有直接关系.所以首先你要编辑好内存中德5条数据(不需要考虑数据库记录),然后绑定给控件即可.解决方案三:不固定的都能绑定,固定的还不能了?解决方案四:引用2楼xuanbg的回复: 不固定的都

comboBox 绑定数据列 怎么去除重复

问题描述 用C#做hotelmanagesystem的时候comboBox绑定了数据库里一个列,但是不能去除重复的项怎么去除重复的项:我是手动绑定的,用的vs2005 解决方案 解决方案二:写SQL查询的时候用Distinct要害字去掉重复数据:SELECTDISTINCTCOL_NAMEFROMTABLE1GROUPBYCOL_NAME解决方案三:推荐在查询时去掉重复的解决方案四:你要帮定总要查询的吧,直接在查询语句里面限制就可以了OKIN1的方法就可以了解决方案五:填充的时候SQL语句用个g