Java ListView没有';在按下模拟器上的一个键之前,不要更新
我正在开发我的第一个Android应用程序,其中我从web加载了一些JSON,并在解析后在Java ListView没有';在按下模拟器上的一个键之前,不要更新,java,android,listview,refresh,Java,Android,Listview,Refresh,我正在开发我的第一个Android应用程序,其中我从web加载了一些JSON,并在解析后在列表视图中显示数据。当应用程序首次启动时,列表视图为空。加载数据后,数据已经很满了。但是,即使在我的适配器上使用notifyDataSetChanged()时,ListView也不会刷新并显示新加载的数据,直到我按下模拟器键盘上的一个键 这是我执行的处理。我下载JSON,解析它,然后我的代码看起来是这样的-现在,什么都没有显示,甚至在按下一个键时也没有显示: JSONArray jObject = new
列表视图中显示数据。当应用程序首次启动时,列表视图
为空。加载数据后,数据已经很满了。但是,即使在我的适配器上使用notifyDataSetChanged()
时,ListView
也不会刷新并显示新加载的数据,直到我按下模拟器键盘上的一个键
这是我执行的处理。我下载JSON,解析它,然后我的代码看起来是这样的-现在,什么都没有显示,甚至在按下一个键时也没有显示:
JSONArray jObject = new JSONArray(new2);
int l = jObject.length();
downloadedArrayOfStrings = new String[jObject.length()];
for(int i = 0; i < l; i++){
Log.v("i", ""+i);
jObject.getJSONObject(i).getString("category").toString();
}
ArrayList<String> lst = new ArrayList<String>();
lst.addAll(Arrays.asList(downloadedArrayOfStrings));
newAdapter = new MobileArrayAdapter(this, lst, downloadedArrayOfStrings);
newAdapter.setJSONArray(jObject);
setListAdapter(newAdapter);
JSONArray jObject=newjsonarray(new2);
int l=jObject.length();
downloadedArrayOfStrings=新字符串[jObject.length()];
对于(int i=0;i
关于为什么会发生这种情况以及如何解决它,您有什么想法吗?当列表需要更新时,您应该将ListAdapter
重新分配给ListView
。notifyDataSetChanged()
不能与ListAdapter
一起正常工作,设计用于CursorAdapter
。在尝试我上面所说的内容之前,您还可以尝试使用invalidateViews()
invalidateViews()
基本上会重建您的ListView
如果没有任何上下文,几乎不可能知道发生了什么。请发布相关代码和任何logcat错误。只有在从web获得数据后,我才会设置适配器。当我更改列表项并调用notifyDataChanged rarelly时,我尝试了你所说的Nuno,现在我下载后的代码如下:(上面编辑)-它没有显示任何内容尝试了什么?你能在重新分配ListAdapter
的地方放一些代码吗?我在上面的代码中,在下载完成后重新分配ListAdapter。该代码在HttpURLConnection在不同线程上完成后执行。我尝试了getListView().invalidateViews(),但它仍然是空的。尝试getListView().setListAdapter(新的MobileArrayAdapter(这个,lst,下载的ArrayOfString))代码>还是没什么。ListView为空。只是为了验证-数据确实在那里并且被正确解析。我已经验证过很多次了。在所有这些更改之前,只有在按下模拟器键盘上的一个键后,数据才会正确显示。现在,无论发生什么,都不会显示任何内容。我很困惑,因为代码看起来是正确的,我已经盯着它看了好几个小时了。编辑:要清楚,此代码是从AsyncTask实例调用的。这跟这事有关系吗?我试图从另一个线程刷新listView?你能发布更多的代码吗?我想看看你在哪里创建listView
,以及你试图从哪里更新它。