setListAdapter无法在Android中使用Sherlock片段
我制作了一个列表视图来显示从url解析的JSON数据!同样的代码在没有片段的情况下运行良好,但是在片段的情况下setListAdapter不工作!我还尝试了getActivity().setListAdapter!请检查我的密码setListAdapter无法在Android中使用Sherlock片段,android,listview,android-listview,android-fragments,Android,Listview,Android Listview,Android Fragments,我制作了一个列表视图来显示从url解析的JSON数据!同样的代码在没有片段的情况下运行良好,但是在片段的情况下setListAdapter不工作!我还尝试了getActivity().setListAdapter!请检查我的密码 public class Uploads extends SherlockFragment { // Progress Dialog private ProgressDialog pDialog; // Creating JSON Parse
public class Uploads extends SherlockFragment {
// Progress Dialog
private ProgressDialog pDialog;
// Creating JSON Parser object
JSONParser jsonParser = new JSONParser();
ArrayList<HashMap<String, String>> uploadsList;
// products JSONArray
JSONArray uploads = null;
// Inbox JSON url
private static final String UPLOADS_URL = "http://my_url";
// ALL JSON node names
private static final String TAG_UPLOADS = "uploads";
private static final String TAG_ID = "id";
private static final String TAG_NAME = "name";
private static final String TAG_DATE = "date";
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragmenttab2, container,
false);
// Hashmap for ListView
uploadsList = new ArrayList<HashMap<String, String>>();
// Loading INBOX in Background Thread
new LoadInbox().execute();
return rootView;
}
/**
* Background Async Task to Load all INBOX messages by making HTTP Request
* */
class LoadInbox extends AsyncTask<String, String, String> {
/**
* Before starting background thread Show Progress Dialog
* */
@Override
protected void onPreExecute() {
super.onPreExecute();
pDialog = new ProgressDialog(getActivity());
pDialog.setMessage("Loading Content...");
pDialog.setIndeterminate(false);
pDialog.setCancelable(false);
pDialog.show();
}
/**
* getting Inbox JSON
* */
protected String doInBackground(String... args) {
// Building Parameters
List<NameValuePair> params = new ArrayList<NameValuePair>();
// getting JSON string from URL
JSONObject json = jsonParser.makeHttpRequest(UPLOADS_URL, "GET",
params);
// Check your log cat for JSON reponse
Log.d("Inbox JSON: ", json.toString());
try {
uploads = json.getJSONArray(TAG_UPLOADS);
for (int i = 0; i < uploads.length(); i++) {
JSONObject c = uploads.getJSONObject(i);
// Storing each json item in variable
String id = c.getString(TAG_ID);
String name = c.getString(TAG_NAME);
String date = c.getString(TAG_DATE);
// creating new HashMap
HashMap<String, String> map = new HashMap<String, String>();
// adding each child node to HashMap key => value
map.put(TAG_ID, id);
map.put(TAG_NAME, name);
map.put(TAG_DATE, "Date: " + date);
// adding HashList to ArrayList
uploadsList.add(map);
}
} catch (JSONException e) {
e.printStackTrace();
}
return null;
}
/**
* After completing background task Dismiss the progress dialog
* **/
protected void onPostExecute(String file_url) {
// dismiss the dialog after getting all products
pDialog.dismiss();
Toast.makeText(getActivity(), "Content Loaded!", Toast.LENGTH_LONG)
.show();
// updating UI from Background Thread
getActivity().runOnUiThread(new Runnable() {
public void run() {
/**
* Updating parsed JSON data into ListView
* */
ListAdapter adapter = new SimpleAdapter(getActivity(),
uploadsList, R.layout.list_items, new String[] {
TAG_NAME, TAG_DATE }, new int[] {
R.id.tvUploadTitle, R.id.tvUploadDate });
// updating listview
setListAdapter(adapter);
}
});
}
}
}
公共类上载扩展了SherlockFragment{
//进度对话框
私人对话;
//创建JSON解析器对象
JSONParser JSONParser=新的JSONParser();
ArrayList上传列表;
//产品JSONArray
JSONArray上传=null;
//收件箱JSON url
私有静态最终字符串上载\u URL=”http://my_url";
//所有JSON节点名称
私有静态最终字符串标记_UPLOADS=“UPLOADS”;
私有静态最终字符串标记\u ID=“ID”;
私有静态最终字符串标记_NAME=“NAME”;
私有静态最终字符串标记_DATE=“DATE”;
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
视图根视图=充气机。充气(R.layout.fragmenttab2,容器,
假);
//ListView的Hashmap
uploadsList=新的ArrayList();
//在后台线程中加载收件箱
新建LoadInbox().execute();
返回rootView;
}
/**
*通过发出HTTP请求加载所有收件箱消息的后台异步任务
* */
类LoadInbox扩展异步任务{
/**
*在启动后台线程显示进度对话框之前
* */
@凌驾
受保护的void onPreExecute(){
super.onPreExecute();
pDialog=newprogressdialog(getActivity());
setMessage(“正在加载内容…”);
pDialog.setUndeterminate(假);
pDialog.setCancelable(假);
pDialog.show();
}
/**
*获取收件箱JSON
* */
受保护的字符串doInBackground(字符串…args){
//建筑参数
List params=new ArrayList();
//从URL获取JSON字符串
JSONObject json=jsonParser.makeHttpRequest(上传URL,“获取”,
参数);
//检查日志cat中的JSON响应
Log.d(“收件箱JSON:,JSON.toString());
试一试{
uploads=json.getJSONArray(TAG_uploads);
对于(int i=0;ivalue
地图放置(标签标识,标识);
地图放置(标签名称、名称);
地图放置(标记日期,日期:+日期);
//将哈希列表添加到ArrayList
uploadsList.add(地图);
}
}捕获(JSONException e){
e、 printStackTrace();
}
返回null;
}
/**
*完成后台任务后,关闭“进度”对话框
* **/
受保护的void onPostExecute(字符串文件\u url){
//获取所有产品后关闭对话框
pDialog.disclose();
Toast.makeText(getActivity(),“内容已加载!”,Toast.LENGTH\u LONG)
.show();
//从后台线程更新UI
getActivity().runOnUiThread(新的Runnable()){
公开募捐{
/**
*将解析的JSON数据更新到ListView中
* */
ListAdapter=new SimpleAdapter(getActivity(),
uploadsList,R.layout.list_项,新字符串[]{
标记名称,标记日期,新整数[]{
R.id.tvUploadTitle,R.id.tvUploadDate});
//更新列表视图
setListAdapter(适配器);
}
});
}
}
}
您需要更改
public class Uploads extends SherlockFragment
到
或者你需要在
R.layout.fragmenttab2中有一个listview,初始化它,然后将适配器设置为listview。你的类没有扩展SherlockListFragment
谢谢它工作了!我没有意识到我错过了一件简单的事情!
public class Uploads extends SherlockListFragment