5

私は内部に情報を持っているlistViewを持っています、そして私が1つの行をクリックすると、その選択された行の下のすべての詳細を私に与える必要があります、その選択された行には画像、画像名、価格などがありますので、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

私はこのコードを2日間試していましたが、それを取得したので、ここに進みます。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);


    }

次に、2番目のクラスは画像を含むその値を受け取ります:

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が属性imagenameとpriceを持っていると仮定しましょう。次に、以下のスニペットのようなものを使用してそれらの値を抽出します。row.xmlgetView

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 に答える