1
Coins.javaの各リストアイテムにインテントを渡そうとしています。私がインテントを追加すると、私は同じページに連れて行きます。 StackOverflowで可能なAnswersを検索します。多くの回答は、switch文を使用して別の意図を与えると述べています。しかし、私のアプリでは、リスト内の項目の数は定数ではありません。それは10または5または100でも可能性があります。私は答えのためにStackOverflowを検索しましたが、私は自分のアプリのために働くものを見つけることができました。それを行う方法を教えてもらえますか?前もって感謝します。各リスト項目のインテントが異なります。
Coins.java
package com.example.android.cotescol; import android.content.Intent; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.ListView; import java.util.ArrayList; public class Coins extends android.support.v4.app.Fragment{ @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.currency_list, container, false); final ArrayList<CoinObject> coins = new ArrayList<CoinObject>(); coins.add(new CoinObject(1, "India", 1947)); coins.add(new CoinObject(1, "India", 1947)); CoinAdapter itemsAdapter = new CoinAdapter(getActivity(), coins); ListView listView = (ListView) rootView.findViewById(R.id.list); listView.setAdapter(itemsAdapter); listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { CoinObject coinObject = coins.get(position); Intent intent = new Intent(Coins.this.getActivity(), DetailsActivity.class); startActivity(intent); } }); return rootView; } }
CoinObject.java
package com.example.android.cotescol; import java.util.HashMap; import java.util.Locale; import java.util.Map; public class CoinObject { private final static int NO_IMAGE_AVAILABLE = R.drawable.nia; private final static String NOT_AVAILABLE = "Material Not Specified"; private final static double NOT_KNOWN = 0.00; private int denomination; private String country; private String countryCode; private int year; private int obverseImageResourceId = NO_IMAGE_AVAILABLE; private int reverseImageResourceId = NO_IMAGE_AVAILABLE; private String material = NOT_AVAILABLE; private double diameter = NOT_KNOWN; private double weight = NOT_KNOWN; private double thickness = NOT_KNOWN; private double value = NOT_KNOWN; public CoinObject(int denomination, String country, int year, int obverseImageResourceId, int reverseImageResourceId , double diameter, double thickness, String material, double weight, double value) { this.denomination = denomination; this.country = country; this.year = year; this.obverseImageResourceId = obverseImageResourceId; this.reverseImageResourceId = reverseImageResourceId; this.diameter = diameter; this.thickness = thickness; this.material = material; this.weight = weight; this.value = value; this.countryCode = getCountryCode(country); } public CoinObject(int denomination, String country, int year, double diameter, double thickness, String material, double weight, double value) { this.denomination = denomination; this.country = country; this.year = year; this.diameter = diameter; this.thickness = thickness; this.material = material; this.weight = weight; this.value = value; this.countryCode = getCountryCode(country); } public CoinObject(int denomination, String country, int year) { this.denomination = denomination; this.country = country; this.year = year; this.countryCode = getCountryCode(country); } public String getCountryCode(String countryName) { // Get all country codes in a string array. String[] isoCountryCodes = Locale.getISOCountries(); Map<String, String> countryMap = new HashMap<>(); // Iterate through all country codes: for (String code : isoCountryCodes) { // Create a locale using each country code Locale locale = new Locale("", code); // Get country name for each code. String name = locale.getDisplayCountry(); // Map all country names and codes in key - value pairs. countryMap.put(name, code); } // Get the country code for the given country name using the map. // Here you will need some validation or better yet // a list of countries to give to user to choose from. String countryCode = countryMap.get(countryName); // "NL" for Netherlands. return countryCode; } public int getDenomination() { return denomination; } public int getYear() { return year; } public int getObverseImageResourceId() { return obverseImageResourceId; } public int getReverseImageResourceId() { return reverseImageResourceId; } public double getDiameter() { return diameter; } public double getWeight() { return weight; } public double getThickness() { return thickness; } public double getValue() { return value; } public String getCountry() { return country; } public String getCountryCode() { return countryCode; } public String getMaterial() { return material; } }
感謝をコインオブジェクトを抽出@Francesc –