Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to get value onListItemClick and pass it to another activity

Tags:

android

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 ?

like image 735
Zamani Avatar asked Jun 23 '12 01:06

Zamani


People also ask

How to get data from ListView by clicking item on ListView?

Try this: my_listview. setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView<?> parent, View view, int position, long id) { } });


2 Answers

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 :)

like image 94
Zamani Avatar answered Oct 27 '22 01:10

Zamani


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();

        }

    });
like image 37
Vipul Avatar answered Oct 27 '22 00:10

Vipul