1

リストアイテムを表示するアクティビティがあり、リストアイテムで場所の名前のみを表示したいのですが、表示することはできますが、その場所の名前に関連するアイテムをクリックすると、別の詳細が表示されますアクティビティ、つまり場所の詳細。だから、私はアンドロイドが初めてである私の問題を解決するのを手伝ってください。

ここに私の両方のアクティビティコードがあります:

locationList=( ListView)findViewById(R.id.list_Surroundings);



    // Hashmap for ListView
    ArrayList<HashMap<String, String>> locationOfList = new ArrayList<HashMap<String, String>>();

    adapter = new SimpleAdapter(this, locationOfList,
            R.layout.list_item1,
            new String[] { TAG_NAME }, new int[] {
                    R.id.name});

    locationList.setAdapter(adapter);

 // Creating JSON Parser instance
    JSONParser jParser = new JSONParser();

 // getting JSON string from URL
    JSONObject json = jParser.getJSONFromUrl(url);

    try {
     // Getting Array of Category
    location=json.getJSONArray(TAG_LOCATION);

    //looping through all categories
    for(int i = 0; i < location.length(); i++){
        JSONObject c = location.getJSONObject(i);
        JSONObject c1=c.getJSONObject(TAG_LOCATION1);

        // Storing each json item in variable
            String LocationID = c1.getString(TAG_LOCATION_ID);
            String Name = c1.getString(TAG_NAME);
            String Phone = c1.getString(TAG_PHONE);
            String FormattedPhone = c1.getString(TAG_FORMATTED_PHONE);
            String Address = c1.getString(TAG_ADDRESS);
            String CrossStreet = c1.getString(TAG_CROSS_STREET);
            String Lat = c1.getString(TAG_LAT);
            String Lng = c1.getString(TAG_LNG);
            String Distance = c1.getString(TAG_DISTANCE);
            String PostalCode = c1.getString(TAG_POSTAL_CODE);
            String City = c1.getString(TAG_CITY);
            String State = c1.getString(TAG_STATE);
            String Country = c1.getString(TAG_COUNTRY);

        // creating new HashMap
           HashMap<String, String> map = new HashMap<String, String>();

        // adding each child node to HashMap key => value
           map.put(TAG_LOCATION_ID, LocationID);
           map.put(TAG_NAME, Name);
           map.put(TAG_PHONE, Phone);
           map.put(TAG_FORMATTED_PHONE, FormattedPhone);
           map.put(TAG_ADDRESS, Address);
           map.put(TAG_CROSS_STREET, CrossStreet);
           map.put(TAG_LAT, Lat);
           map.put(TAG_LNG, Lng);
           map.put(TAG_DISTANCE, Distance); 
           map.put(TAG_POSTAL_CODE, PostalCode);
           map.put(TAG_CITY, City);
           map.put(TAG_STATE, State);
           map.put(TAG_COUNTRY, Country);

           // adding HashList to ArrayList
           locationOfList.add(map);
    }
    } catch (Exception e) {
        // TODO: handle exception
        e.printStackTrace();
    }

    locationList.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position,
                long id) {
            // TODO Auto-generated method stub

             // getting values from selected ListItem
            String Name = ((TextView) view.findViewById(R.id.name)).getText().toString();
            String Distance = ((TextView) view.findViewById(R.id.distance_list1)).getText().toString();
            String Country = ((TextView) view.findViewById(R.id.country_list1)).getText().toString();
            String City = ((TextView) view.findViewById(R.id.city_list1)).getText().toString();
            String Phone = ((TextView) view.findViewById(R.id.phone_list1)).getText().toString();

         // Starting new intent
            Intent in = new Intent(getApplicationContext(), LocationDetails.class);
            in.putExtra(TAG_NAME, Name);
            in.putExtra(TAG_DISTANCE, Distance);
            in.putExtra(TAG_COUNTRY, Country);
            in.putExtra(TAG_CITY, City);
            in.putExtra(TAG_PHONE, Phone);

            startActivity(in);
        }
    });


public class LocationDetails extends Activity{

// JSON node keys
    private static final String TAG_NAME = "Name";
    private static final String TAG_PHONE = "Phone";
    private static final String TAG_ADDRESS = "Address";
    private static final String TAG_DISTANCE= "Distance";
    private static final String TAG_CITY = "City";
    private static final String TAG_COUNTRY= "Country";

    private TextView name,phone,address,distance,city,country;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.location_details);

        // getting intent data
        Intent in = getIntent();

        // Get JSON values from previous intent
        String Name = in.getStringExtra(TAG_NAME);
        String Phone = in.getStringExtra(TAG_PHONE);
        String Address = in.getStringExtra(TAG_ADDRESS);
        String Distance = in.getStringExtra(TAG_DISTANCE);
        String City = in.getStringExtra(TAG_CITY);
        String Country = in.getStringExtra(TAG_COUNTRY);

        // Displaying all values on the screen
        name= (TextView) findViewById(R.id.TxtView_name);
        phone=(TextView)findViewById(R.id.TxtView_PhoneField);
        address=(TextView)findViewById(R.id.TxtView_AddressField);
        distance=(TextView)findViewById(R.id.TxtView_DistanceField);
        city=(TextView)findViewById(R.id.TxtView_CityField);
        country=(TextView)findViewById(R.id.TxtView_CountryField);

        name.setText(Name);
        phone.setText(Phone);
        address.setText(Address);
        distance.setText(Distance);
        city.setText(City);
        country.setText(Country);
    }
}
4

2 に答える 2

1

送信アクティビティで、置き換えてみてください

in.putExtra(TAG_NAME, Name);
in.putExtra(TAG_DISTANCE, Distance);
in.putExtra(TAG_COUNTRY, Country);
in.putExtra(TAG_CITY, City);
in.putExtra(TAG_PHONE, Phone);

Bundle extras = new Bundle();
extras.putString(TAG_NAME, Name);
extras.putString(TAG_DISTANCE, Distance);
extras.putString(TAG_COUNTRY, Country);
extras.putString(TAG_CITY, City);
extras.putString(TAG_PHONE, Phone);
extras.putExtras(extras);

受信アクティビティで、置き換えてみてください

// getting intent data
        Intent in = getIntent();

        // Get JSON values from previous intent
        String Name = in.getStringExtra(TAG_NAME);
        String Phone = in.getStringExtra(TAG_PHONE);
        String Address = in.getStringExtra(TAG_ADDRESS);
        String Distance = in.getStringExtra(TAG_DISTANCE);
        String City = in.getStringExtra(TAG_CITY);
        String Country = in.getStringExtra(TAG_COUNTRY);

Bundle extras = getIntent().getExtras();

if(extras != null) {

    String Name = extras.getString(TAG_NAME);
    String Phone = extras.getString(TAG_PHONE);
    String Address = extras.getString(TAG_ADDRESS);
    String Distance = extras.getString(TAG_DISTANCE);
    String City = extras.getString(TAG_CITY);
    String Country = extras.getString(TAG_COUNTRY);  

}
于 2013-04-13T16:28:31.907 に答える
0

TextViews からデータを取得しようとしていますが、これはまったく正しくありません。

listItem の onClick() 内でArrayList使用して、選択した項目の値を取得する必要があります。locationOfList(position)

このようなもの :

 locationList.setOnItemClickListener(new OnItemClickListener() {

    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position,
            long id) {
        // TODO Auto-generated method stub

        // getting values from selected ListItem
        HashMap<String, String> selectedMap =  locationOfList.get(position);           

     // Starting new intent
        Intent in = new Intent(getApplicationContext(), LocationDetails.class);
        in.putExtra(selectedMap);

        startActivity(in);
    }
});

2 番目のアクティビティでは、この例を使用して HashMap からデータを取得します。

于 2013-04-13T16:30:28.510 に答える