samedi 3 janvier 2015

how to use a listview in fragment


Vote count:

0




i am trying to display information on a listView with pictures in a fragment using SherlockListFragment... the details are coming from database .i tried it without putting it in a fragment ..that is i extended listActivity not SherlockListFragment.... and it worked... what am i missing


this is my activity class



import java.util.ArrayList;
import java.util.HashMap;

import org.json.JSONArray;
import org.json.JSONObject;

import com.actionbarsherlock.app.SherlockListFragment;


import android.app.ProgressDialog;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ListView;

public class Now_Showing extends SherlockListFragment {

private static final String TAG_POSTS = "posts";
public static final String TAG_ID = "id";
public static final String TAG_NAME = "category";
public static final String TAG_CATEGORIES_COUNT = "categories_count";
public static final String TAG_CATEGORIES_LOGO = "categories_logo";

private static final String URL_CATEGORY = "http://ift.tt/WMu0ls";
private BaseAdapter mAdapter;
private ListView lv;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.nowshowing, container, false);
lv = getListView();
lv.setDivider(null);
new LoadComments().execute();
return rootView;

}
class LoadComments extends AsyncTask<Void, Void, ArrayList<HashMap<String,String>>> {
private ProgressDialog pDialog;
@Override
protected void onPreExecute() {
super.onPreExecute();
pDialog = new ProgressDialog(getActivity());

pDialog.setIndeterminate(false);
pDialog.setCancelable(true);

}

@Override
protected ArrayList<HashMap<String, String>> doInBackground(Void... arg0) {

ArrayList<HashMap<String, String>> categoryList = new ArrayList<HashMap<String, String>>();
JSONParser jParser = new JSONParser();
JSONObject json = jParser.getJSONFromUrl(URL_CATEGORY);
try {
JSONArray categories = json.getJSONArray(TAG_POSTS);
for (int i = 0; i < categories.length(); i++) {
String id = categories.getJSONObject(i).getString("TAG_ID");
String name = categories.getJSONObject(i).getString("TAG_NAME");
String songs_count = categories.getJSONObject(i).getString("TAG_CATEGORIES_COUNT");
String category_logo = categories.getJSONObject(i).getString("TAG_CATEGORIES_LOGO");

HashMap<String, String> map = new HashMap<String, String>();
map.put(TAG_ID, id);
map.put(TAG_NAME, name);
map.put(TAG_CATEGORIES_COUNT, songs_count);
map.put(TAG_CATEGORIES_LOGO, category_logo);

categoryList.add(map);
}
}catch (Throwable e){
e.printStackTrace();
}
return categoryList;
}

@Override
protected void onPostExecute(ArrayList<HashMap<String, String>> result) {
super.onPostExecute(result);
if(pDialog.isShowing()){
pDialog.dismiss();
}
mAdapter = new CategoryListAdapter(getActivity(),result);
lv.setAdapter(mAdapter);
mAdapter.notifyDataSetChanged();
}
}
}


this is my adapter class



import java.util.ArrayList;

import java.util.HashMap;
import com.squareup.picasso.Picasso;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

public class CategoryListAdapter extends BaseAdapter {
private Context mContext;
LayoutInflater inflater;
private final ArrayList<HashMap<String, String>> urls;
HashMap<String, String> resultp = new HashMap<String, String>();

public static final String CATEGORY_LOGO_URL = "http://ift.tt/1wbpuvW";

public CategoryListAdapter(Context context,
ArrayList<HashMap<String, String>> items) {
mContext = context;
urls = items;
}

@Override
public int getCount() {
return urls.size();
}

@Override
public Object getItem(int position) {
return position;
}

@Override
public long getItemId(int position) {
return getItem(position).hashCode();
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
TextView category_name;
ImageView category_logo;
TextView item_count;
TextView item_id;

inflater = (LayoutInflater) mContext
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

View view = inflater.inflate(R.layout.custom_list_category, parent,
false);

resultp = urls.get(position);

category_name = (TextView) view.findViewById(R.id.category_name);
category_logo = (ImageView) view.findViewById(R.id.img_category_logo);
item_count = (TextView) view.findViewById(R.id.songs_count);
item_id = (TextView) view.findViewById(R.id.category_id);

category_name.setText(resultp.get(Now_Showing.TAG_NAME));
item_count.setText(resultp.get(Now_Showing.TAG_CATEGORIES_COUNT));
item_id.setText(resultp.get(Now_Showing.TAG_ID));

// Picasso image loader library starts here
Picasso.with(mContext)
.load(resultp.get(Now_Showing.TAG_CATEGORIES_LOGO)) // Photo URL
.placeholder(R.drawable.placeholder) // This image will be displayed while photo URL is loading
.error(R.drawable.error) // if error shows up during downloading
.fit().centerCrop() // settings
.into(category_logo); // we put it into our layout component (imageview)

return view;
}

}


this is the error



01-03 16:55:44.376: E/AndroidRuntime(2455): java.lang.IllegalStateException: Content view not yet created
01-03 16:55:44.376: E/AndroidRuntime(2455): at android.support.v4.app.ListFragment.ensureList(ListFragment.java:328)
01-03 16:55:44.376: E/AndroidRuntime(2455): at android.support.v4.app.ListFragment.getListView(ListFragment.java:222)
01-03 16:55:44.376: E/AndroidRuntime(2455): at com.mall.first.Now_Showing.onCreateView(Now_Showing.java:36)
01-03 16:55:44.376: E/AndroidRuntime(2455): at android.support.v4.app.Fragment.performCreateView(Fragment.java:1460)
01-03 16:55:44.376: E/AndroidRuntime(2455): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:911)
01-03 16:55:44.376: E/AndroidRuntime(2455): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1088)
01-03 16:55:44.376: E/AndroidRuntime(2455): at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682)
01-03 16:55:44.376: E/AndroidRuntime(2455): at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1444)


asked 47 secs ago







how to use a listview in fragment

Aucun commentaire:

Enregistrer un commentaire