我使用notifyDataSetChanged和我的自定义GridViewAdapter来更新listView但是当我点击更新的listView时,旧的链接仍然存在。我的onCreate方法中有以下ClickListener。
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
Intent intent = new Intent(getBaseContext(), SpiceList.class);
intent.putExtra("INGREDIENTS_CALL", true);
intent.putExtra("INGREDIENTS_SELECTED", position + 1);
if (recipeCall) {
intent.putExtra("RECIPE_CALL", true);
}
startActivity(intent);
}
});
我已尝试在更新listView的按钮内复制此内容,但这不起作用。关于如何最好地更新我的监听器以反映我更改的listView的任何想法?
谢谢! :)
答案 0 :(得分:1)
不确定我是否理解您的问题,但让我看看我是否可以尝试。您在点击列表视图时会更改列表视图视图吗?
您是否删除了适用于您的适配器的数组或列表中的任何元素?所以你删除一个项目,然后调用notifyDataSetChange()?或者您向数组添加项并调用notify方法?
答案 1 :(得分:0)
原来问题在于我检索SQL查询的方式。我正在使我的监听器的位置等于我正在检索的SQL条目的ID。因此,即使我的列表发生了更改,第1项仍然会提取ID为1的SQL项目。
当我在Android中设计查询时,我原本没想到会遇到这个问题。但是,现在我已将SQL查询链接到实际的项ID而不是侦听器位置。我的新听众现在是:
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
Intent intent = new Intent(getBaseContext(), SpiceList.class);
intent.putExtra("INGREDIENTS_CALL", true);
intent.putExtra("INGREDIENTS_SELECTED", Integer.parseInt(resultsID.get(position)));
if (recipeCall) {
intent.putExtra("RECIPE_CALL", true);
}
startActivity(intent);
}
});
感谢您的帮助!