Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ListView没有';在按下模拟器上的一个键之前,不要更新_Java_Android_Listview_Refresh - Fatal编程技术网

Java ListView没有';在按下模拟器上的一个键之前,不要更新

Java ListView没有';在按下模拟器上的一个键之前,不要更新,java,android,listview,refresh,Java,Android,Listview,Refresh,我正在开发我的第一个Android应用程序,其中我从web加载了一些JSON,并在解析后在列表视图中显示数据。当应用程序首次启动时,列表视图为空。加载数据后,数据已经很满了。但是,即使在我的适配器上使用notifyDataSetChanged()时,ListView也不会刷新并显示新加载的数据,直到我按下模拟器键盘上的一个键 这是我执行的处理。我下载JSON,解析它,然后我的代码看起来是这样的-现在,什么都没有显示,甚至在按下一个键时也没有显示: JSONArray jObject = new

我正在开发我的第一个Android应用程序,其中我从web加载了一些JSON,并在解析后在
列表视图中显示数据。当应用程序首次启动时,
列表视图
为空。加载数据后,数据已经很满了。但是,即使在我的适配器上使用
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
,以及你试图从哪里更新它。