【发布时间】:2016-01-29 15:01:58
【问题描述】:
我正在尝试根据搜索栏的值更改列表视图中显示的值。目前列表视图由光标填充(我认为我不能在列表中更改一次的值)。我正在尝试将光标添加到 ArrayList 中,然后再添加到列表中。
我的想法是我可以更改数组列表元素,进而更新列表视图。我在创建数组列表然后更改它以更新列表视图时遇到问题。
示例 列表视图包含 2 列(名称和值),这些是返回给光标并添加到 arrayList 中的内容。当 seekbar 处于值(例如 2)时,arrayList 中的所有值都将乘以 2。它们只在列表中更新,而不在数据库中更新。
任何人都可以帮助我朝着正确的方向前进以修复我的 arrayList 并应用搜索栏更改
光标和数组列表
final Cursor ings = adapter.getIngs(Code);
ingredients.moveToFirst();
ArrayList<String> IngsList = new ArrayList<String>();
while(!ings.isAfterLast())
{
Ings.add(ings.getString(ings.getColumnIndex("name")));
Ings.add(ings.getInt(ings.getColumnIndex("measurement")));
Ings.add(ings.getString(ings.getColumnIndex("unit")));
}
ings.close();
String[] columns = new String[] {adapter.KEY_NAME, adapter.KEY_MEASUREMENT, adapter.KEY_UNIT};
int[] to = new int[] {R.id.Name, R.id.Measurement, R.id.Unit};
final SimpleCursorAdapter Adpater = new SimpleCursorAdapter(this,R.layout.row5, ingredients, ingredient_columns, to, 0);
ListView Required = (ListView) findViewById(R.id.Required);
Required.setAdapter(Adpater);
SeekBar
seekBar = (SeekBar) findViewById(R.id.servingSeek);
textView = (TextView) findViewById(R.id.actualServing);
// Initialize the textview with '0'
textView.setText("Serving Size:" + seekBar.getProgress());
seekBar.setOnSeekBarChangeListener(
new SeekBar.OnSeekBarChangeListener() {
int progress = 0;
@Override
public void onProgressChanged(SeekBar seekBar,
int progresValue, boolean fromUser) {
progress = progresValue;
textView.setText("Serving Size:" + progress);
//alter cursor values
//update cursor
}
【问题讨论】:
-
您可以创建和使用自定义适配器而不是
SimpleCursorAdapter。 -
那会有什么不同?
-
您可以制作一个适用于
ArrayList而不是Cursor的适配器,这样您就可以在ListView中添加/删除项目。 -
我可以编辑列表中的项目吗?我不想添加或删除任何东西
-
是的,您可以使用自定义适配器来做到这一点。
标签: java android xml listview arraylist