5

我有一个 listView 里面有信息,当我单击一行时,它必须在该选定行下给我所有详细信息,在该选择行中我有图像、图像名称、价格等,所以当我单击 listView 中的图像时,它必须填充所有信息,包括下一个活动的图像

我试图在我的 listView 上显示,没关系,这是我的代码:

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


    }
  }

编辑 :

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;
    }
}

我可以将位置传递给下一堂课,但是如何从选定的行中获取所有信息?

4

2 回答 2

5

我正在尝试这段代码两天,然后我得到了它,所以就这样了.. OnListItemClick 将传递一个位置:

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


    }

然后第二类将收到包括图像在内的值:

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


    }

我帮助那些将来和我有同样问题的人:)

于 2012-06-27T13:11:45.023 回答
2

我相信您正在扩展ArratAdapter并且必须在 .row.xml下膨胀getView。假设您的 row.xml 具有属性 imagename 和 price。然后您将使用类似下面的代码片段来提取这些值。

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

        }

    });
于 2012-06-23T02:51:08.877 回答