Android-点击按钮更新GridView
我正在尝试设置一个gridview,它将在执行新搜索时刷新 这是我设置gridview的命令Android-点击按钮更新GridView,android,gridview,notifydatasetchanged,Android,Gridview,Notifydatasetchanged,我正在尝试设置一个gridview,它将在执行新搜索时刷新 这是我设置gridview的命令 final GridElement_Results adapter = new GridElement_Results(this, savedInstanceState, track_name, album_name, track_num, album_id, album_link); grid = (GridView)findViewById(R.id.grid_results);
final GridElement_Results adapter = new GridElement_Results(this, savedInstanceState, track_name, album_name, track_num, album_id, album_link);
grid = (GridView)findViewById(R.id.grid_results);
grid.setAdapter(adapter);
正如您所看到的,我正在向它传递一组数组
单击一个按钮,调用函数getTracks(),从服务器获取新数据。阵列将使用新数据进行更新,我已验证这些数据是否有效
icon_activesearch.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
getTracks("newsearchterm");
adapter.notifyDataSetChanged();
grid.invalidateViews();
}
}
);
然后调用adapter.notifyDataSetChanged()和grid.invalidateViews()来更新和重画网格。但很明显我做错了什么
是因为我将适配器设置为最终适配器吗?要在onClick方法中访问它,我需要将其设置为final
我应该做些什么来让它工作。您应该等到新的数据获取之后再通知适配器,但是您在getTracks()之后立即调用notify,没有任何延迟。add
getTracks()
方法您是否将新结果传递给适配器?从我看来,您没有将List、ArrayList或Array类型的对象传递给适配器。适配器是如何获得显示的数据的?我应该添加:getTracks()更新一组全局数组:track\u name、album\u name等。我认为一旦这些数组被更新,并调用notifyDataSetChanged(),网格就会自动更新。在不创建新适配器的情况下,如何将这些数组再次传递给现有适配器?您的意思是在http请求完成之前调用notifyDataSetChanged吗?我怎样才能增加延迟?睡觉