Reputation: 137
I have activity in which I show the list item and in list item I only want to show the name of places and I am able to show it but when I click on the item I want related to that place name it shows the detail on another activity i.e. location detail. so please help me to resolve my problem I am new in android.
here is my both activity code:
locationList=( ListView)findViewById(R.id.list_Surroundings);
// Hashmap for ListView
ArrayList<HashMap<String, String>> locationOfList = new ArrayList<HashMap<String, String>>();
adapter = new SimpleAdapter(this, locationOfList,
R.layout.list_item1,
new String[] { TAG_NAME }, new int[] {
R.id.name});
locationList.setAdapter(adapter);
// Creating JSON Parser instance
JSONParser jParser = new JSONParser();
// getting JSON string from URL
JSONObject json = jParser.getJSONFromUrl(url);
try {
// Getting Array of Category
location=json.getJSONArray(TAG_LOCATION);
//looping through all categories
for(int i = 0; i < location.length(); i++){
JSONObject c = location.getJSONObject(i);
JSONObject c1=c.getJSONObject(TAG_LOCATION1);
// Storing each json item in variable
String LocationID = c1.getString(TAG_LOCATION_ID);
String Name = c1.getString(TAG_NAME);
String Phone = c1.getString(TAG_PHONE);
String FormattedPhone = c1.getString(TAG_FORMATTED_PHONE);
String Address = c1.getString(TAG_ADDRESS);
String CrossStreet = c1.getString(TAG_CROSS_STREET);
String Lat = c1.getString(TAG_LAT);
String Lng = c1.getString(TAG_LNG);
String Distance = c1.getString(TAG_DISTANCE);
String PostalCode = c1.getString(TAG_POSTAL_CODE);
String City = c1.getString(TAG_CITY);
String State = c1.getString(TAG_STATE);
String Country = c1.getString(TAG_COUNTRY);
// creating new HashMap
HashMap<String, String> map = new HashMap<String, String>();
// adding each child node to HashMap key => value
map.put(TAG_LOCATION_ID, LocationID);
map.put(TAG_NAME, Name);
map.put(TAG_PHONE, Phone);
map.put(TAG_FORMATTED_PHONE, FormattedPhone);
map.put(TAG_ADDRESS, Address);
map.put(TAG_CROSS_STREET, CrossStreet);
map.put(TAG_LAT, Lat);
map.put(TAG_LNG, Lng);
map.put(TAG_DISTANCE, Distance);
map.put(TAG_POSTAL_CODE, PostalCode);
map.put(TAG_CITY, City);
map.put(TAG_STATE, State);
map.put(TAG_COUNTRY, Country);
// adding HashList to ArrayList
locationOfList.add(map);
}
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
locationList.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
// TODO Auto-generated method stub
// getting values from selected ListItem
String Name = ((TextView) view.findViewById(R.id.name)).getText().toString();
String Distance = ((TextView) view.findViewById(R.id.distance_list1)).getText().toString();
String Country = ((TextView) view.findViewById(R.id.country_list1)).getText().toString();
String City = ((TextView) view.findViewById(R.id.city_list1)).getText().toString();
String Phone = ((TextView) view.findViewById(R.id.phone_list1)).getText().toString();
// Starting new intent
Intent in = new Intent(getApplicationContext(), LocationDetails.class);
in.putExtra(TAG_NAME, Name);
in.putExtra(TAG_DISTANCE, Distance);
in.putExtra(TAG_COUNTRY, Country);
in.putExtra(TAG_CITY, City);
in.putExtra(TAG_PHONE, Phone);
startActivity(in);
}
});
public class LocationDetails extends Activity{
// JSON node keys
private static final String TAG_NAME = "Name";
private static final String TAG_PHONE = "Phone";
private static final String TAG_ADDRESS = "Address";
private static final String TAG_DISTANCE= "Distance";
private static final String TAG_CITY = "City";
private static final String TAG_COUNTRY= "Country";
private TextView name,phone,address,distance,city,country;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.location_details);
// getting intent data
Intent in = getIntent();
// Get JSON values from previous intent
String Name = in.getStringExtra(TAG_NAME);
String Phone = in.getStringExtra(TAG_PHONE);
String Address = in.getStringExtra(TAG_ADDRESS);
String Distance = in.getStringExtra(TAG_DISTANCE);
String City = in.getStringExtra(TAG_CITY);
String Country = in.getStringExtra(TAG_COUNTRY);
// Displaying all values on the screen
name= (TextView) findViewById(R.id.TxtView_name);
phone=(TextView)findViewById(R.id.TxtView_PhoneField);
address=(TextView)findViewById(R.id.TxtView_AddressField);
distance=(TextView)findViewById(R.id.TxtView_DistanceField);
city=(TextView)findViewById(R.id.TxtView_CityField);
country=(TextView)findViewById(R.id.TxtView_CountryField);
name.setText(Name);
phone.setText(Phone);
address.setText(Address);
distance.setText(Distance);
city.setText(City);
country.setText(Country);
}
}
Upvotes: 1
Views: 1587
Reputation: 16364
You are trying to get the data from the TextViews, which is not at all right.
You need to fetch the values of the selected item from the ArrayList
by using locationOfList(position)
inside the onClick() of the listItem.
Something like this :
locationList.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
// TODO Auto-generated method stub
// getting values from selected ListItem
HashMap<String, String> selectedMap = locationOfList.get(position);
// Starting new intent
Intent in = new Intent(getApplicationContext(), LocationDetails.class);
in.putExtra(selectedMap);
startActivity(in);
}
});
And in your second Activity, use this example to retrieve the data from the HashMap.
Upvotes: 0
Reputation: 33
In sending activity, try replacing
in.putExtra(TAG_NAME, Name);
in.putExtra(TAG_DISTANCE, Distance);
in.putExtra(TAG_COUNTRY, Country);
in.putExtra(TAG_CITY, City);
in.putExtra(TAG_PHONE, Phone);
with
Bundle extras = new Bundle();
extras.putString(TAG_NAME, Name);
extras.putString(TAG_DISTANCE, Distance);
extras.putString(TAG_COUNTRY, Country);
extras.putString(TAG_CITY, City);
extras.putString(TAG_PHONE, Phone);
extras.putExtras(extras);
In receiving activity, try replacing
// getting intent data
Intent in = getIntent();
// Get JSON values from previous intent
String Name = in.getStringExtra(TAG_NAME);
String Phone = in.getStringExtra(TAG_PHONE);
String Address = in.getStringExtra(TAG_ADDRESS);
String Distance = in.getStringExtra(TAG_DISTANCE);
String City = in.getStringExtra(TAG_CITY);
String Country = in.getStringExtra(TAG_COUNTRY);
with
Bundle extras = getIntent().getExtras();
if(extras != null) {
String Name = extras.getString(TAG_NAME);
String Phone = extras.getString(TAG_PHONE);
String Address = extras.getString(TAG_ADDRESS);
String Distance = extras.getString(TAG_DISTANCE);
String City = extras.getString(TAG_CITY);
String Country = extras.getString(TAG_COUNTRY);
}
Upvotes: 1