I have a listView which has information inside and when i click one row it must give me all the details under that selected row , in that select row i have image, imagename, price, etc. so when I click image in listView it must populate all the information including the image on a next activity
I have tried to display on my listView and it ok,here my code :
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
JSONObject json = JSONfunctions.getJSONfromURL("http://10.0.2.2/php/p.php");
try{
JSONArray earthquakes = json.getJSONArray("prop");
for(int i=0;i<earthquakes.length();i++){
JSONObject e = earthquakes.getJSONObject(i);
String BookName = e.getString("P_City");
PNames.add(BookName);
String BookImg = e.getString("Pname");
PImages.add(BookImg);
}
}catch(JSONException e){
Log.e("log_tag", "Error parsing data "+e.toString());
}
setListAdapter(new MobileArrayAdapter(this, PNames,PImages));
}
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
String selectedValue = (String) getListAdapter().getItem(position);
Toast.makeText(this, selectedValue, Toast.LENGTH_SHORT).show();
Intent i = new Intent(getApplicationContext(), Searching.class);
// sending data to new activity
i.putExtra("product", selectedValue);
startActivity(i);
}
}
EDIT :
private final Context context;
private final String[] myBookNamelist = null;
private ArrayList<String> MyP = new ArrayList<String>();
private ArrayList<String> myPurl = new ArrayList<String>();
//ArrayList<HashMap<String, String>> myBookNamelist = new ArrayList<HashMap<String, String>>();
//ArrayList<HashMap<String, String>> myBookImageurl = new ArrayList<HashMap<String, String>>();
public MobileArrayAdapter(Context context,ArrayList<String> Bname,ArrayList<String> BUrl) {
super(context, R.layout.list_mobile, Bname);
this.context = context;
this.MyP = Bname;
this.myPurl = BUrl;
}
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View rowView = inflater.inflate(R.layout.list_mobile, parent, false);
TextView textView = (TextView) rowView.findViewById(R.id.label);
ImageView imageView = (ImageView) rowView.findViewById(R.id.logo);
textView.setText(MyP.get(position));
Bitmap bitmap = null;
// Change icon based on name
JSONObject json = JSONfunctions.getJSONfromURL("http://10.0.2.2/php/p.php");
// http://api.geonames.org/earthquakesJSON?north=44.1&south=-9.9&east=-22.4&west=55.2&username=demo
try{
JSONArray earthquakes = json.getJSONArray("prop");
//for(position=0;position<earthquakes.length();position++){
JSONObject e = earthquakes.getJSONObject(position);
String BB = e.getString("P_City");
MyP.add(BB);
String UU = e.getString("Pname");
myPurl.add(UU);
//}
}catch(JSONException e){
Log.e("log_tag", "Error parsing data "+e.toString());
}
String s = MyP.get(position);
String i = myPurl.get(position);
System.out.println(s);
System.out.println(i);
try {
bitmap = BitmapFactory.decodeStream((InputStream)new URL(i).getContent());
} catch (MalformedURLException err) {
// TODO Auto-generated catch block
err.printStackTrace();
} catch (IOException err) {
// TODO Auto-generated catch block
err.printStackTrace();
}
//if (!s.equals("")) {
imageView.setImageBitmap(bitmap);
//} else {
System.out.println("Bitmap image: "+position+"="+bitmap);
//imageView.setImageResource(R.drawable.android_logo);
//}
return rowView;
}
}
And I can pass position to the next class , but how to get all the information from a selected row ?
Try this: my_listview. setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView<?> parent, View view, int position, long id) { } });
I was trying this code for two days now, then I got it, so here it goes.. OnListItemClick will pass a position :
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
String selectedValue = (String) getListAdapter().getItem(position);
Toast.makeText(this, selectedValue, Toast.LENGTH_SHORT).show();
Intent moreDetailsIntent = new Intent(ListMobileActivity.this,PropertiesDetails.class);
Bundle dataBundle = new Bundle();
dataBundle.putString("SelectedProperty", selectedValue);
moreDetailsIntent.putExtras(dataBundle);
startActivity(moreDetailsIntent);
}
Then second class will receive that values including a image :
String Price,Desc,City,rooms,address,size,garage,sold,Pname,image1,image2,image3;
Bitmap bitmap,bitmap1,bitmap2,bitmap3;
TextView txtPrice,txtDesc,txtCity,txtrooms,txtaddress,txtsize,txtgarage,txtsold;
ImageView imgpropertyImage,imgpropertyImage2;
String result = null;
InputStream is = null;
StringBuilder sb=null;
Button btnNext,btnPrevs;
int imgcount = 1;
JSONPARSER jsonParser = new JSONPARSER();
private static String url_create_product = "http://10.0.2.2/php/ViewPropertiesByName.php";
// JSON Node names
// private static final String TAG_SUCCESS = "success";
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.thenew);
txtPrice = (TextView) findViewById(R.id.price);
txtDesc = (TextView) findViewById(R.id.desc);
txtCity = (TextView) findViewById(R.id.City);
txtrooms = (TextView) findViewById(R.id.Rooms);
txtaddress = (TextView) findViewById(R.id.Address);
txtsize = (TextView) findViewById(R.id.Size);
txtgarage = (TextView) findViewById(R.id.garage);
// txtsold = (TextView) findViewById(R.id.sold);
imgpropertyImage = (ImageView) findViewById(R.id.imageViewProp);
imgpropertyImage2 = (ImageView) findViewById(R.id.imageViewProp2);
btnNext =(Button) findViewById(R.id.btnNext);
btnPrevs =(Button) findViewById(R.id.btnPrevis);
Bundle b = getIntent().getExtras(); // Getting the Bundle object that pass from another activity
String SelectedProperty = b.getString("SelectedProperty");
////////////////////////Executing A Search Query//////////////////////////////////
List<NameValuePair> postParameters = new ArrayList<NameValuePair>();
postParameters.add(new BasicNameValuePair("P_City",SelectedProperty));
//getting JSON Object
// Note that create product url accepts POST method
JSONObject json = jsonParser.makeHttpRequest(url_create_product,
"POST", postParameters);
// check log cat fro response
Log.d("Create Response", json.toString());
/////////////Getting Jason Object from the search Query and displaying results
try{
JSONArray earthquakes = json.getJSONArray("PropertyDetails");
for(int i=0;i<earthquakes.length();i++){
JSONObject e = earthquakes.getJSONObject(i);
Price = e.getString("P_Price");
Desc = e.getString("P_Desc");
City = e.getString("P_City");
rooms = e.getString("P_Rooms");
address = e.getString("P_Address");
size = e.getString("P_Size");
garage = e.getString("P_garage");
//sold = e.getString("P_Sold");
Pname = e.getString("Pname");
image1 = e.getString("image1");
image2 = e.getString("image2");
image3 = e.getString("image3");
//BookImages.add(BookImg);
}
I helping those who will have same problem as mine in future :)
I beleive you are extending ArratAdapter
and must be having row.xml
inflated under getView
.And lets assume your row.xml have attributes imagename and price.Then you will use something like below snippet to extract those values.
mListView.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView <? > myAdapter, View myView, int myItemInt, long mylng) {
String imageName = ((TextView) myView.findViewById(R.id.imageName)).getText().toString();
String price = ((TextView) myView.findViewById(R.id.price)).getText().toString();
}
});
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With