I am retrieving JSON data from my server with which I want to update my ListView with. Everything works fine with retrieving the data but after it's finished and it tries to update the list I just get an empty page with no errors. Log.d("ListLocations", "after") is able to run as well so I don't see any problems with PostExecute and intiliasation of SimpleAdapter
I have adapted my code from this tutorial: http://www.androidhive.info/2012/05/how-to-connect-android-with-php-mysql/#ff0000
This is my ListActivity class:
public class ListLocations extends ListActivity
{
//Root url and controller
private static String root = "someURL/";
private static String locationsController = "locations";
// Progress Dialog
private ProgressDialog pDialog;
//JSON node names for locations
private static final String TAG_ID = "id";
private static final String TAG_NAME = "name";
private static final String TAG_TERRAIN = "terrain";
private static final String TAG_DIFFICULTY = "difficulty";
private static final String TAG_RATINGS = "ratings";
private static final String TAG_UID = "uid";
private static final String TAG_LONG= "long";
private static final String TAG_LAT= "lat";
private static final String TAG_DISTANCE= "distance";
private static final String TAG_COMID= "comid";
//Will be used to contain the list of locations extracted from JSON
ArrayList<HashMap<String, String>> list = new ArrayList<HashMap<String, String>>();
#Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_list_locations);
new GetLocations().execute(root + locationsController);
}
#Override
public boolean onCreateOptionsMenu(Menu menu)
{
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_list_locations, menu);
return true;
}
class GetLocations extends AsyncTask<String, Void, Void>
{
// private ProgressDialog pDialog;
protected void onPreExecute()
{
super.onPreExecute();
pDialog = new ProgressDialog(ListLocations.this);
pDialog.setMessage("Loading locations. Please wait...");
pDialog.setIndeterminate(false);
pDialog.setCancelable(false);
pDialog.show();
}
#Override
public Void doInBackground(String... urls)
{
try
{
JSONHandler jsonHandler = new JSONHandler();
JSONObject json= jsonHandler.getJSONFromUrl(urls[0]);
Log.d("ListLocations",json.toString());
JSONArray locations = json.getJSONArray("locations");
int length = locations.length();
ArrayList<HashMap<String, String>> list = new ArrayList<HashMap<String, String>>();
for(int i = 0; i < length; i++)
{
JSONObject loc = locations.getJSONObject(i);
//Create HashMap
HashMap<String, String> map = new HashMap<String, String>();
//Get and store values into map
map.put("id", loc.getString(TAG_ID));
map.put("name", loc.getString(TAG_NAME));
map.put("distance", loc.getString(TAG_DISTANCE));
map.put("difficulty", loc.getString(TAG_DIFFICULTY));
map.put("terrain", loc.getString(TAG_TERRAIN));
map.put("ratings", loc.getString(TAG_RATINGS));
map.put("long", loc.getString(TAG_LONG));
map.put("lat", loc.getString(TAG_LAT));
map.put("uid", loc.getString(TAG_UID));
map.put("comid", loc.getString(TAG_COMID));
//Add map to list
list.add(map);
}
System.out.println(list);
}
catch (Exception e)
{
e.printStackTrace();
}
Log.d("ListLocations", "Successfully finished HTTP Request");
return(null);
}
/**
* After completing background task Dismiss the progress dialog
* **/
protected void onPostExecute(Void result) {
super.onPostExecute(result);
pDialog.dismiss();
// updating UI from Background Thread
runOnUiThread(new Runnable() {
public void run() {
Log.d("ListLocations", "inside run");
ListAdapter adapter = new SimpleAdapter(
ListLocations.this, list,
R.layout.list_item, new String[] { TAG_ID,
TAG_NAME},
new int[] { R.id.id, R.id.name });
Log.d("ListLocations", "after");
// updating listview
setListAdapter(adapter);
}
});
}
}
}
This is list_item.xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<!-- location id (pid) - will be HIDDEN - used to pass to other activity -->
<TextView
android:id="#+id/id"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:visibility="gone" />
<!-- Name Label -->
<TextView
android:id="#+id/name"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingTop="6dip"
android:paddingLeft="6dip"
android:textSize="17dip"
android:textStyle="bold" />
</LinearLayout>
This is activity_list_locations.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<ListView
android:id="#android:id/list"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
</LinearLayout>
You never put the data in the list field from the Activity that you use with the SimpleAdapter because the list variable in the doInBackground method is a local variable and not the field. Instead of:
//...
ArrayList<HashMap<String, String>> list = new ArrayList<HashMap<String, String>>();
for(int i = 0; i < length; i++) {
//...
write:
//...
list = new ArrayList<HashMap<String, String>>();
for(int i = 0; i < length; i++) {
//...
so you don't make a local variable and put the elements in the right list.
Related
Hello friends i am new to android and i am learning about android programming. I am working with my friends. I have web service from which i am showing list of cities in listview now my friend give me task that is when i will click on city then id of that city return me so i don't how to do so please anybody can help me to do so.
public class CityNameActivity extends ListActivity{
private TextView displayText;
ListView list;
private ProgressDialog pDialog;
// URL to get Cities JSON
private static String url = "http://14.140.200.186/Hospital/get_city.php";
// JSON Node names
private static final String TAG_CITIES = "Cities";
private static final String TAG_ID = "city_id";
private static final String TAG_NAME = "city_name";
// Cities JSONArray
JSONArray Cities = null;
// Hashmap for ListView
ArrayList<HashMap<String, String>> citylist;
//ArrayList<String> citylist;
#Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.cityname_activity_main);
ListView listView=getListView();
citylist = new ArrayList<HashMap<String, String>>();
new GetCities().execute();
}
/**
* Async task class to get json by making HTTP call
* */
private class GetCities extends AsyncTask<Void, Void, Void> {
#Override
protected void onPreExecute() {
super.onPreExecute();
// Showing progress dialog
pDialog = new ProgressDialog(CityNameActivity.this);
pDialog.setMessage("Please wait...");
pDialog.setCancelable(false);
pDialog.show();
}
#Override
protected Void doInBackground(Void... arg0) {
// Creating service handler class instance
ServiceHandler sh = new ServiceHandler();
// Making a request to url and getting response
String jsonStr = sh.makeServiceCall(url, ServiceHandler.GET);
Log.d("Response: ", "> " + jsonStr);
if (jsonStr != null) {
try {
JSONObject jsonObj = new JSONObject(jsonStr);
// Getting JSON Array node
Cities = jsonObj.getJSONArray(TAG_CITIES);
// looping through All Cities
for (int i = 0; i < Cities.length(); i++) {
JSONObject c = Cities.getJSONObject(i);
String id = c.getString(TAG_ID);
String name = c.getString(TAG_NAME);
HashMap<String, String> Cities = new HashMap<String, String>();
Cities.put(TAG_ID, id);
Cities.put(TAG_NAME, name);
// adding contact to Cities list
citylist.add(Cities);
}
} catch (JSONException e) {
e.printStackTrace();
}
} else {
Log.e("ServiceHandler", "Couldn't get any data from the url");
}
return null;
}
#Override
protected void onPostExecute(Void result)
{
super.onPostExecute(result);
// Dismiss the progress dialog
if (pDialog.isShowing())
pDialog.dismiss();
/**`enter code here`
* Updating parsed JSON data into ListView
* */
final ListAdapter adapter = new SimpleAdapter(CityNameActivity.this, citylist, R.layout.city_list_item, new String[] { TAG_NAME}, new int[] { R.id.name});
setListAdapter(adapter);
}
}}
cityname_mai_activity.xml
<ListView
android:id="#android:id/list"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="#+id/textView4" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Select City"
android:id="#+id/textView4"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:textSize="25dp"/>
city_list_item:
<TextView
android:id="#+id/name"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingBottom="2dip"
android:paddingTop="6dip"
android:textSize="16sp"
android:textStyle="bold" />
You have to use the Spinner like these below:
Spinner spin = (Spinner) findViewById(R.id.spinner);
spin.setOnItemSelectedListener(this);
ArrayAdapter aa = new ArrayAdapter(this,R.layout.spinner_item,ARRAYLIST_DATA_HERE);
aa.setDropDownViewResource(R.layout.spinner_item);
//Setting the ArrayAdapter data on the Spinner
spin.setAdapter(aa);
spin.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
#Override
public void onItemSelected(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
String items=spinner.getSelectedItem().toString();
Log.i("Selected item : ",items);
}
#Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
});
return true;
Use the spinner_item xml
xmlns:android="http://schemas.android.com/apk/res/android"
style="?android:attr/spinnerDropDownItemStyle"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#BAB7BA"
android:ellipsize="start"
android:gravity="left"
android:padding="10dip"
android:textColor="#color/white" />
Did you check On Click Listener for your ListView ?? I think that will solve your problem.. Use onClikcListener's on ItemClick event which will give you position and based on that position you can get item from your Arraylist which will give you id from that..
I have list of cities in listview and now i want to add searchview in listview to search the item by specific letter like when i enter D in search view then all the cities should show with D in listview can anyone help me how can i do this i am new to android plaese help me.
this is my code in in this code only is showing in listview now i want to add searchview item please help
public class CityNameActivity extends ListActivity {
ListView list;
EditText inputSearch;
private ProgressDialog pDialog;
// URL to get Cities JSON
private static String url = "http://14.140.200.186/Hospital/get_city.php";
// JSON Node names
private static final String TAG_CITIES = "Cities";
private static final String TAG_ID = "city_id";
private static final String TAG_NAME = "city_name";
// Cities JSONArray
JSONArray Cities = null;
// Hashmap for ListView
ArrayList<HashMap<String, String>> citylist;
//ArrayList<String> citylist;
#Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.cityname_activity_main);
ListView listView=getListView();
inputSearch = (EditText) findViewById(R.id.inputSearch);
citylist = new ArrayList<HashMap<String, String>>();
// list.setOnClickListener(this);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
#Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
String cityId= citylist.get(position).get(TAG_ID);
Intent in = new Intent(getApplicationContext(),
HospitalList_Activity.class);
in.putExtra("city_id",cityId);
startActivity(in);}
});
new GetCities().execute();
}
/**
* Async task class to get json by making HTTP call
* */
private class GetCities extends AsyncTask<Void, Void, Void> {
#Override
protected void onPreExecute() {
super.onPreExecute();
// Showing progress dialog
pDialog = new ProgressDialog(CityNameActivity.this);
pDialog.setMessage("Please wait...");
pDialog.setCancelable(false);
pDialog.show();
}
#Override
protected Void doInBackground(Void... arg0) {
// Creating service handler class instance
ServiceHandler sh = new ServiceHandler();
// Making a request to url and getting response
String jsonStr = sh.makeServiceCall(url, ServiceHandler.GET);
Log.d("Response: ", "> " + jsonStr);
if (jsonStr != null) {
try {
JSONObject jsonObj = new JSONObject(jsonStr);
// Getting JSON Array node
Cities = jsonObj.getJSONArray(TAG_CITIES);
// looping through All Cities
for (int i = 0; i < Cities.length(); i++) {
JSONObject c = Cities.getJSONObject(i);
String id = c.getString(TAG_ID);
String name = c.getString(TAG_NAME);
HashMap<String, String> Cities = new HashMap<String, String>();
Cities.put(TAG_ID, id);
Cities.put(TAG_NAME, name);
// adding contact to Cities list
citylist.add(Cities);
}
} catch (JSONException e) {
e.printStackTrace();
}
} else {
Log.e("ServiceHandler", "Couldn't get any data from the url");
}
return null;
}
#Override
protected void onPostExecute(Void result)
{
super.onPostExecute(result);
// Dismiss the progress dialog
if (pDialog.isShowing())
pDialog.dismiss();
/**`enter code here`
* Updating parsed JSON data into ListView
* */
ListAdapter adapter = new SimpleAdapter(CityNameActivity.this, citylist, R.layout.city_list_item, new String[] { TAG_NAME}, new int[] { R.id.name});
setListAdapter(adapter);
}
}}
cityname_activity_main.xml
<ListView
android:id="#android:id/list"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
city_list_item.xml
<TextView
android:id="#+id/name"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingBottom="2dip"
android:paddingTop="6dip"
android:textSize="16sp"
android:textStyle="bold" />
I have a class which extends listactivity. I am parsing data from a json file and putting data in list. i have also created a checkbox to check student is present if it checked. For that i have created an array to get the position from list. I am getting the student names but checkbox is giving me null values. Please Help!!! Here is my code,
public class Student_data extends ListActivity {
private ProgressDialog pDialog;
private Button button;
ListView lv;
// URL to get contacts JSON
private static String url = "http://10.0.2.2/studentdata.json";
private static int[] present, absent;
private static int i = 0, j = 0, x;
// JSON Node names
private static final String TAG_DEP_ID = "dep_id";
private static final String TAG_HEAD = "stdata";
private static final String TAG_NAME = "name";
private static final String TAG_ENROLL = "enrollment";
// contacts JSONArray
JSONArray data = null;
// Hashmap for ListView
ArrayList<HashMap<String, String>> studentList;
#Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.student_list);
studentList = new ArrayList<HashMap<String, String>>();
button = (Button) findViewById(R.id.saveData);
button.setOnClickListener(new ButtonClick());
lv = getListView();
new GetContacts().execute();
lv.setOnItemClickListener(new CheckBoxClick());
}
private class GetContacts extends AsyncTask<Void, Void, Void> {
#Override
protected void onPreExecute() {
super.onPreExecute();
// Showing progress dialog
pDialog = new ProgressDialog(Student_data.this);
pDialog.setMessage("Please wait...");
pDialog.setCancelable(false);
pDialog.show();
}
#Override
protected Void doInBackground(Void... arg0) {
// Creating service handler class instance
ServiceHandler sh = new ServiceHandler();
// Making a request to url and getting response
String jsonStr = sh.makeServiceCall(url, ServiceHandler.GET);
Log.d("Response: ", "> " + jsonStr);
if (jsonStr != null) {
try {
JSONObject jsonObj = new JSONObject(jsonStr);
// Getting JSON Array node
data = jsonObj.getJSONArray(TAG_HEAD);
// looping through All Contacts
for (int i = 0; i < data.length(); i++) {
JSONObject c = data.getJSONObject(i);
String id = c.getString(TAG_DEP_ID);
String name = c.getString(TAG_NAME);
String enrll = c.getString(TAG_ENROLL);
// tmp hashmap for single contact
HashMap<String, String> contact = new HashMap<String, String>();
// adding each child node to HashMap key => value
contact.put(TAG_DEP_ID, id);
contact.put(TAG_NAME, name);
contact.put(TAG_ENROLL, enrll);
// adding contact to contact list
studentList.add(contact);
}
} catch (JSONException e) {
e.printStackTrace();
}
} else {
Log.e("ServiceHandler", "Couldn't get any data from the url");
}
return null;
}
#Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
// Dismiss the progress dialog
if (pDialog.isShowing())
pDialog.dismiss();
/**
* Updating parsed JSON data into ListView
*/
ListAdapter adapter = new SimpleAdapter(Student_data.this, studentList, R.layout.data_item,
new String[] { TAG_NAME }, new int[] { R.id.name });
setListAdapter(adapter);
}
}
public class CheckBoxClick implements OnItemClickListener {
#Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
// TODO Auto-generated method stub
CheckBox chkbox = (CheckBox) arg1;
if (chkbox.isChecked()) {
present[i] = arg2;
i++;
}
if (chkbox.isChecked()) {
absent[j] = arg2;
j++;
}
}
}
public class ButtonClick implements OnClickListener {
#Override
public void onClick(View v) {
// TODO Auto-generated method stub
finish();
}
}
}
data_item.xml--->
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:padding="10dp"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:weightSum="2" >
<!-- Name Label -->
<TextView
android:id="#+id/name"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="2"
android:paddingBottom="2dip"
android:paddingTop="6dip"
android:textColor="#000"
android:textSize="16sp"
android:textStyle="bold" />
<CheckBox
android:id="#+id/chkbox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1" />
</LinearLayout>
Try this
if (((CheckBox) arg1).isChecked()) {
//your code
}
ProgressTask.java
public class ProgressTask extends AsyncTask<String, Void, Boolean>{
private ProgressDialog dialog;
private ListActivity activity;
private Context context;
ArrayList<HashMap<String, String>> jsonlist = new ArrayList<HashMap<String, String>>();
ListView lv ;
private static String url = "http://api.cartperk.com/v1/supportedoperator";
private static final String OPCODE="code";
private static final String OPNAME="name";
public ProgressTask(ListActivity activity) {
this.activity = activity;
context = activity;
dialog = new ProgressDialog(context);
}
protected void onPreExecute() {
this.dialog.setMessage("Progress start");
this.dialog.show();
}
#Override
protected void onPostExecute(final Boolean success) {
if (dialog.isShowing()) {
dialog.dismiss();
}
ListAdapter adapter = new SimpleAdapter(context, jsonlist,
R.layout.list_item, new String[] { OPCODE, OPNAME}, new int[] {
R.id.opcode, R.id.opname});
activity.setListAdapter(adapter);
lv = activity.getListView();
}
protected Boolean doInBackground(final String... args) {
JSONParser jParser = new JSONParser();
JSONArray json = jParser.getJSONFromUrl(url);
for (int i = 0; i < json.length(); i++)
{
try {
JSONObject c = json.getJSONObject(i);
String opcode = c.getString(OPCODE);
String opname = c.getString(OPNAME);
HashMap<String, String> map = new HashMap<String, String>();
map.put(OPCODE,opcode);
map.put(OPNAME,opname);
jsonlist.add(map);
}
catch(JSONException e)
{
e.printStackTrace();
}
}
return null;
}
its showing error in the list_item, R.id.opcode , R.id.opname should i create a new XML file and write the code there or else will generate dynamically my present layout file is as show below can you guys help me out
<RelativeLayout>
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="#dimen/activity_vertical_margin"
android:paddingLeft="#dimen/activity_horizontal_margin"
android:paddingRight="#dimen/activity_horizontal_margin"
android:paddingTop="#dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<ListView
android:id="#android:id/list"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
<RealativeLayout>
Not Able to Understand.
should i create a new XML file and write the code there or else will generate dynamicaly my present layout file
Look at the constructor
SimpleAdapter(Context context, List<? extends Map<String, ?>> data, int resource, String[] from, int[] to)
You need to have list_item.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TextView
android:id="#+id/opcode"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="49dp"
android:layout_marginTop="51dp"
android:text="TextView" />
<TextView
android:id="#+id/opname"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="#+id/textView1"
android:layout_alignParentRight="true"
android:layout_marginRight="72dp"
android:text="TextView" />
</RelativeLayout>
Edit:
I think you do not have a ListActivity in the first place.
Secondly your json is
[ // is a json array noder
{ // json object node
"operatorCode": "AC",
"operatorName": "Aircel"
},
But you have
private static final String OPCODE="code"; // should be operatorCOde
private static final String OPNAME="name"; // operatorName
Keys are not matching the column names
Thirdly you do not have a json object at the top its a json array.
public class MainActivity extends ListActivity
{
private ProgressDialog dialog;
ArrayList<HashMap<String, String>> jsonlist = new ArrayList<HashMap<String, String>>();
ListView lv ;
private static String url = "http://api.cartperk.com/v1/supportedoperator";
private static final String OPCODE="operatorCode";
private static final String OPNAME="operatorName";
#Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
dialog = new ProgressDialog(this);
dialog.setMessage("Loading...");
new TheTask().execute();
}
class TheTask extends AsyncTask<Void,Void,Void>
{
#Override
protected Void doInBackground(Void... params) {
try
{
HttpClient httpclient = new DefaultHttpClient();
httpclient.getParams().setParameter(CoreProtocolPNames.PROTOCOL_VERSION, HttpVersion.HTTP_1_1);
HttpGet request = new HttpGet(url);
HttpResponse response = httpclient.execute(request);
HttpEntity resEntity = response.getEntity();
String res = EntityUtils.toString(resEntity);
JSONArray json = new JSONArray(res);
for(int i=0;i<json.length();i++)
{
JSONObject c = json.getJSONObject(i);
String opcode = c.getString(OPCODE);
String opname = c.getString(OPNAME);
HashMap<String, String> map = new HashMap<String, String>();
map.put(OPCODE,opcode);
map.put(OPNAME,opname);
jsonlist.add(map);
}
}catch(Exception e)
{
e.printStackTrace();
}
return null;
}
#Override
protected void onPostExecute(Void result) {
// TODO Auto-generated method stub
super.onPostExecute(result);
dialog.dismiss();
ListAdapter adapter = new SimpleAdapter(MainActivity.this, jsonlist,
R.layout.list_item, new String[] { OPCODE, OPNAME}, new int[] {
R.id.opcode, R.id.opname});
setListAdapter(adapter);
}
#Override
protected void onPreExecute() {
// TODO Auto-generated method stub
super.onPreExecute();
dialog.show();
}
}
}
Snap
I have created a listview with headers but I am unable to group items that fall under the same header.
Can someone advise me on what I should do?
Below are the codes to display the items into the listview:
public class OrganizationList extends Activity implements OnClickListener {
ListView lv;
SimpleAdapter simpleAdapter;
ArrayList<HashMap<String, String>> videosList;
// Progress Dialog
private ProgressDialog pDialog;
// Creating JSON Parser object
JSONParser jParser = new JSONParser();
JSONArray videos = null;
// url to get all videos
private static String url_video = "http://10.0.2.2/android_connect/get_organization.php";
//JSON Nodes
private static final String TAG_POSITION = "position";
private static final String TAG_URL = "URL";
private static final String TAG_MEMBER = "name";
private static final String TAG_SUCCESS = "success";
private static final String TAG_NAME = "members";
protected static final int GET_INTENT_CODE = 0;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.video);
Button refresh = (Button)findViewById(R.id.btn_refresh);
refresh.setOnClickListener(this);
TextView header = (TextView)findViewById(R.id.text_header);
header.setText("Videos (视频)");
ImageButton home = (ImageButton)findViewById(R.id.btn_home);
home.setOnClickListener(this);
// Hashmap for ListView
videosList = new ArrayList<HashMap<String, String>>();
//Get adapter
simpleAdapter = new SimpleAdapter(OrganizationList.this, videosList, R.layout.list_date_item, new String[] {TAG_POSITION, TAG_MEMBER},
new int[] { R.id.text_header, R.id.name});
//Get Listview
lv = (ListView) findViewById(R.id.lst_name);
lv.setOnItemClickListener(new OnItemClickListener() {
#Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// getting values from selected ListItem
String videoName = ((TextView) view.findViewById(R.id.name)).getText()
.toString();
Log.d("row click:", videoName);
}
});
// Loading videos in Background Thread
new LoadAllVideos().execute();
}
/**
* Background Async Task to Load all product by making HTTP Request
* */
class LoadAllVideos extends AsyncTask<String, String, String> {
/**
* Before starting background thread Show Progress Dialog
* */
#Override
protected void onPreExecute() {
super.onPreExecute();
pDialog = new ProgressDialog(OrganizationList.this);
pDialog.setMessage("Loading" + "\n" + "Please wait...");
pDialog.setIndeterminate(false);
pDialog.setCancelable(false);
pDialog.show();
}
/**
* getting All videos from url
* */
protected String doInBackground(String... args) {
// Building Parameters
List<NameValuePair> params = new ArrayList<NameValuePair>();
// getting JSON string from URL
JSONObject json = jParser.makeHttpRequest(url_video, "GET", params);
// Check your log cat for JSON reponse
Log.d("All videos: ", json.toString());
try {
// Checking for SUCCESS TAG
int success = json.getInt(TAG_SUCCESS);
if (success == 1) {
// videos found
// Getting Array of videos
videos = json.getJSONArray(TAG_NAME);
// looping through All videos
for (int i = 0; i < videos.length(); i++) {
JSONObject c = videos.getJSONObject(i);
// Storing each json item in variable
String post = c.getString(TAG_POSITION);
String name = c.getString(TAG_MEMBER);
//videosList.add(c.getString(TAG_COMPANY));
//Log.d("item Name:", name);
//Log.d("companyNAme", videosList.get(0));
// creating new HashMap
HashMap<String, String> map = new HashMap<String, String>();
// adding each child node to HashMap key => value
map.put(TAG_POSITION, post);
map.put(TAG_MEMBER, name);
// adding HashList to ArrayList
videosList.add(map);
//System.out.println(map);
}
}
else {
}
} 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 videos
pDialog.dismiss();
// updating UI from Background Thread
runOnUiThread(new Runnable() {
public void run() {
/**
* Updating parsed JSON data into ListView
* */
// ListView Adapter
lv = (ListView) findViewById(R.id.lst_name);
lv.setAdapter(simpleAdapter);
}
});
}
}
#Override
public void onClick(View v) {
// TODO Auto-generated method stub
if (v.getId() == R.id.btn_refresh)
{
videosList.clear();
new LoadAllVideos().execute();
}
else if(v.getId() == R.id.btn_home)
{
Intent intent = new Intent();
intent.setClassName("com.scba", "com.scba.Menu");
finish();
}
}
}
Screenshot:
just change your itemxml file
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<FrameLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#drawable/grayimage"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="president"
android:id="#+id/headerText"
/>
</FrameLayout>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Prof. Dr. Khanuka"
android:id="#+id/DiscriptionText"
/>
</LinearLayout>
And then create Your Custem List from Here custom list
and edit your code according to you
Thanks