Je veux utiliser la vue de carte dans ma liste de liste qui se trouve à l'intérieur d'un fragment pour afficher 2 variable, je peux déjà vous connecter à la base de données et afficher une seule variable "nama_matkul" de JSON dans la vue de ma liste, mais je dois montrer " nama_matkul "et" sks "donc je crée une vision de carte mais je suis confus pour faire adaptateur de costum pour celui-ci
Ceci est ma réponse JSON P>
public class CustomAdapter extends ArrayAdapter<HashMap<String,String>> { private ArrayList<HashMap<String,String>> callLogData; private Context context; private int resource; private View view; private Holder holder; private HashMap<String,String> hashMap; public CustomAdapter(Context context, int resource,ArrayList<HashMap<String, String>> objects) { super(context, resource, objects); this.context=context; this.resource=resource; this.callLogData=objects; } @Override public View getView(int position, View convertView, ViewGroup parent) { LayoutInflater inflater=(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); view=inflater.inflate(resource, parent,false); holder=new Holder(); holder.text_matkul=(TextView)view.findViewById(R.id.tv_matkul); holder.text_sks=(TextView)view.findViewById(R.id.tv_sks); hashMap=callLogData.get(position); Date date=new Date(Long.parseLong(hashMap.get(CallLog.Calls.DATE))); java.text.DateFormat dateFormat=DateFormat.getDateFormat(context); java.text.DateFormat timeformat=DateFormat.getTimeFormat(context); holder.text_matkul.setText(hashMap.get(CallLog.Calls.NUMBER)); holder.text_sks.setText(timeformat.format(date)); return view; } public class Holder { TextView text_matkul; TextView text_sks; } }
3 Réponses :
@ toggan-jr Veuillez consulter cet exemple sur ce lien https://medium.com/@pang_yao/androïd-fragmentment-use-RecyClerView-Cardview-4bc10beac446 et essayez de mettre en œuvre selon l'exemple de démonstration. P>
public class CustomAdapter extends ArrayAdapter<HashMap<String, String>> { private final ArrayList<HashMap<String, String>> callLogData; private final Context context; private final int resource; /* This TODO code won't cause any issue even if not done. */ //TODO : Check below comment private View view; //TODO :: NEED TO REMOVE as adapter handle multiple items therefore no meaning in having single field of holder object private Holder holder; //TODO :: NEED TO REMOVE same as above. you should get item from based on position provided in getView method no need to keep reference to it private HashMap<String, String> hashMap; public CustomAdapter(Context context, int resource, ArrayList<HashMap<String, String>> objects) { super(context, resource, objects); this.context = context; this.resource = resource; callLogData = objects; } @Override public View getView(int position, View convertView, ViewGroup parent) { LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); //Added local instance of holder View view = inflater.inflate(resource, parent, false); //Added local instance of holder Holder holder = new Holder(); holder.text_matkul = (TextView) view.findViewById(R.id.tv_matkul); holder.text_sks = (TextView) view.findViewById(R.id.tv_sks); //Added local instance of holder HashMap<String, String> hashMap = callLogData.get(position); //Commenting below code /* Date date=new Date(Long.parseLong(hashMap.get(CallLog.Calls.DATE))); java.text.DateFormat dateFormat=DateFormat.getDateFormat(context); java.text.DateFormat timeformat=DateFormat.getTimeFormat(context); */ holder.text_matkul.setText(hashMap.get("nama_matkul")); holder.text_sks.setText("sks"); return view; } public class Holder { TextView text_matkul; TextView text_sks; } } public void initListView1() { Call<MatkulMhs> getMatkulMhs = mApiService.getMatkulMhs( mPrefs.getUserID()); getMatkulMhs.enqueue(new Callback<MatkulMhs>() { @Override public void onResponse(Call<MatkulMhs> call, Response<MatkulMhs> response) { boolean iserror_ = response.body().getError(); if (iserror_ == false) { List<Matkul_Mhs> list = new ArrayList<>(); list = response.body().getMatkulMhs(); ArrayList<HashMap<String, String>> nama_matkul = new ArrayList<>(); for (int i = 0; i < list.size(); i++) { HashMap<String, String> item = new HashMap<String, String>(); item.put("nama_matkul", list.get(i).getNamaMatkul()); item.put("sks", list.get(i).getSKS()); nama_matkul.add(item); } //Note: layout resource changed to your card view and ArrayAdapter to CustomAdapter CustomAdapter adapter = new CustomAdapter(getActivity(), R.layout.form_mhs_02_cardview, nama_matkul); listview1.setAdapter(adapter); } } } }
Erreur lors de l'adaptateur CustomAdapter = Nouveau CustomApplePatter (getactivity (), r.layout.form_mhs_02_cardview, nama_matkul); Objet requis Java ... Java.lang.string >> Trouvé Java ... Java.lang.string> []
Modifier l'objet HASHMAP à la flambée des objets HASHMAP, comme ceci NAMA_MATKUL [I] = New ArrayList
Ce code n'est que la modification de votre code d'origine. Si vous êtes intéressé par une amélioration des performances que vous souhaitez rechercher RecyclERView et RecyclERView.Adapter
Son n'a rien montré, quand j'essaie d'utiliser log.d in méthode Public View GeveView Ça n'a pas fonctionné
CustomApplePter Adapter = Nouveau CustomAppleTateur (getActivity (), Android.r.layout.simple_list_item_1, NAMA_MATKUL); strong> p>
Le problème est que mon personnalisé est toujours faux et j'ai besoin de le changer
Ensuite, je vous suggérerai d'utiliser la vue Recycler. Pour les détails, vous pouvez utiliser ci-dessous un lien sur l'endroit où je donne la réponse Stackoverflow.com/Questions/58717944/... ou vous pouvez utiliser le projet GitHub Online Cake Shop By. Github.com/codeInsidecoffee/ ONLINECAKESHOPPING / Tree / Master / A PP / ... à l'UserModule Go Fragment Catégorie I Appelez l'adaptateur et dans la classe de l'adaptateur, vous pouvez voir la vue de ma classe d'adaptateur.