Java 如何使用信息附加ListView或替换
我正在编写一个复制外观的Android应用程序,我的问题如下-我有3个异步任务,挖掘json文件并提取每个部分的信息(本周上映,票房冠军,也在影院),但是当每个列表替换上一个列表时,我需要它们追加。我该怎么做Java 如何使用信息附加ListView或替换,java,android,Java,Android,我正在编写一个复制外观的Android应用程序,我的问题如下-我有3个异步任务,挖掘json文件并提取每个部分的信息(本周上映,票房冠军,也在影院),但是当每个列表替换上一个列表时,我需要它们追加。我该怎么做 public static class PlaceholderFragment extends Fragment implements OnItemClickListener { private InfoAdapter adapter; public Placehold
public static class PlaceholderFragment extends Fragment implements OnItemClickListener {
private InfoAdapter adapter;
public PlaceholderFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_main, container,
false);
ListView list = (ListView) rootView.findViewById(R.id.list);
list.setOnItemClickListener(this);
adapter = new InfoAdapter(inflater);
list.setAdapter(adapter);
String link = "http://api.rottentomatoes.com/api/public/v1.0/lists/movies/box_office.json?apikey=pgmnsbx5sza3rys7uvtw";
DownloadMovieInfo task = new DownloadMovieInfo(link, adapter);
task.execute(new Void[0]);
link = "http://api.rottentomatoes.com/api/public/v1.0/lists/movies/opening.json?apikey=pgmnsbx5sza3rys7uvtw";
task = new DownloadMovieInfo(link, adapter);
task.execute(new Void[0]);
link = "http://api.rottentomatoes.com/api/public/v1.0/lists/movies/in_theaters.json?apikey=pgmnsbx5sza3rys7uvtw";
DownloadMovieInfo task2 = new DownloadMovieInfo(link, adapter);
task2.execute(new Void[0]);
return rootView;
}
下面是异步任务
public class DownloadMovieInfo extends AsyncTask<Void, Void, MovieInfo> {
private String link;
private MovieInfo list;
private InfoAdapter adapter;
public DownloadMovieInfo(String link, InfoAdapter adapter) {
this.link = link;
this.adapter = adapter;
}
@Override
protected MovieInfo doInBackground(Void... params) {
// TODO Auto-generated method stub
URL url = null;
URLConnection connection = null;
Gson gson = new Gson();
InputStream in = null;
BufferedReader reader = null;
try {
url = new URL(link);
connection = url.openConnection();
in = connection.getInputStream();
reader = new BufferedReader(new InputStreamReader(in));
list = gson.fromJson(reader, MovieInfo.class);
} catch (IOException e) {
e.printStackTrace();
}
return list;
}
protected void onPostExecute(MovieInfo result) {
super.onPostExecute(result);
adapter.setinfo(result);
adapter.notifyDataSetChanged();
}
public类下载movieinfo任务{
私有字符串链接;
私人电影信息列表;
专用信息适配器;
公共下载电影信息(字符串链接,信息适配器){
this.link=link;
this.adapter=适配器;
}
@凌驾
受保护的MovieInfo doInBackground(无效…参数){
//TODO自动生成的方法存根
URL=null;
URLConnection=null;
Gson Gson=新的Gson();
InputStream in=null;
BufferedReader reader=null;
试一试{
url=新url(链接);
connection=url.openConnection();
in=connection.getInputStream();
reader=新的BufferedReader(新的InputStreamReader(in));
list=gson.fromJson(reader,MovieInfo.class);
}捕获(IOE异常){
e、 printStackTrace();
}
退货清单;
}
受保护的void onPostExecute(MovieInfo结果){
super.onPostExecute(结果);
adapter.setinfo(结果);
adapter.notifyDataSetChanged();
}
}
我可以想象问题是adapter.setInfo(result);因为这实际上是将数据设置到列表中的内容,但是我没有完全弄清楚如何附加到列表中。请帮忙
PS从密钥中删除最后6位数字,因此它对您无效请发布
InfoAdapter.setInfo()
的代码。您可以尝试adapter.addAll()和adapter.notifyDataSetChanged();只需在适配器中添加新方法。例如,追加数据(列表)。然后实现并调用它。酷,好的,这已经解决了谢谢你我只是需要这个小提示,也许你也可以帮我设置黑魔鬼,不知道如何将它们划分成类别