2012-06-23 22 views
5

私は内部に情報を持っているlistViewを持っています、そして、私がその選択された行の下のすべての詳細を私に与える必要がある1行をクリックすると、価格など ので、私はListViewコントロールに画像をクリックすると、それは次のアクティビティ値を取得する方法onListItemClickと別のアクティビティに渡す

上の画像を含むすべての情報を取り込む必要があり、私は私のリストビューに表示しようとしていますし、それOK、ここに私のコード:

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

位置を次のクラスに渡すことはできますが、選択した行からすべての情報を取得する方法はありますか?

答えて

5

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


    } 

私は将来的に地雷と同じ問題を抱えているだろう人たちを助け:)

+0

'selectedValue =(String)getListAdapter()。getItem(position);'私に 'NullPointerException'を与えます。それは普通ですか? – CagCak

2

私はあなたがArratAdapterを拡張すると.AND属性のimagenameのとprice.Thenを持っているあなたはそれらの値を抽出するために、スニペット、以下のようなものを使用しますあなたのrow.xmlとさせて頂きますgetViewの下で膨張row.xmlを持つする必要があります信じて。

私はその後、私はここにそれが行く、それを得た、今二日間、このコードをしようとしていた。.. OnListItemClick位置を通過します
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(); 

     } 

    }); 
+1

だから私から新しいリストビューを作成する必要があります新しいクラス?なぜならあなたはmListViewを置くからです... ...私はアンドロイドを完全に理解していないので、もっと明確にしてください。 – Zamani

+0

MobileArrayAdapter.javaファイルを表示する –

+0

owk、私のコードを編集します – Zamani

関連する問題