| | |
| Stránka: 1 z 1
| [ Príspevkov: 11 ] | |
Autor | Správa |
---|
Registrovaný: 11.02.09 Prihlásený: 28.03.23 Príspevky: 2208 Témy: 145 Bydlisko: Liptovský M... |
Zdravim, trochu som sa zasekol.. Mam vytvoreny nejaky objekt ListView, k nemu ArrayAdapter ktory nacita zoznam stringov pre ListView z nejakeho pola, ale ako spravit aby to nacitavalo dynamicky, ked sa to pole stringov bude menit pocas behu porgramu? Napr. ked uzivatel stlaci tlacitko, tak v tom poli Stringov pribudne jedna polozka a nacita sa do ListView. Mam.. Kód: ArrayList<String> times_array = new ArrayList<String>();
ListView times_list = (ListView) findViewById(R.id.times_list); ArrayAdapter adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, times_array);
times_list.setAdapter(adapter);
cize do toho times_array sa budu pridavat Stringy (v metode on_click). A co s tym dalej aby to nacitalo vzdy pri pridani?
_________________ "Only a warrior chooses pacifism, others are condemned to it." - unknown author |
|
Registrovaný: 05.04.11 Príspevky: 1693 Témy: 50 Bydlisko: Žilina, Pop... | Napísal XOLOO: 21.04.2014 23:33 | |
|
Kód: adapter.add("ahoj"); adapter.notifyDataSetChanged();
_________________ rMBP 13 2015 iPhone 7
|
|
Registrovaný: 11.02.09 Prihlásený: 28.03.23 Príspevky: 2208 Témy: 145 Bydlisko: Liptovský M... |
a na co je tam ten array list ked pouzivas adapter.add("ahoj") ?
_________________ "Only a warrior chooses pacifism, others are condemned to it." - unknown author |
|
Registrovaný: 05.04.11 Príspevky: 1693 Témy: 50 Bydlisko: Žilina, Pop... | Napísal XOLOO: 21.04.2014 23:41 | |
|
Pretože ty vytvoríš adaptér zvyčajne nad nejakými dátami, ktoré máš v tom arrayliste. A aby si potom stále nerobil ako pako, add do arraylistu a zase vytvorenie adaptéru tak pridáš priamo do adaptéru nie ? ( http://developer.android.com/reference/ ... html#add(T)) Adaptér si môžeš vytvoriť vlastný, čo ti odporúčam urobiť aby si pochopil načo to je, ale vytvor ho z BaseAdapter-u to budeš mať len dobré pre seba
_________________ rMBP 13 2015 iPhone 7
|
|
Registrovaný: 11.02.09 Prihlásený: 28.03.23 Príspevky: 2208 Témy: 145 Bydlisko: Liptovský M... |
Aha, tak to je celkom jednoduche, len vsade sa to nejak zlozito vysvetluje Cize to mam zdedit triedu BaseAdapter ci ju vytvorit nanovo?
_________________ "Only a warrior chooses pacifism, others are condemned to it." - unknown author |
|
Registrovaný: 05.04.11 Príspevky: 1693 Témy: 50 Bydlisko: Žilina, Pop... | Napísal XOLOO: 21.04.2014 23:58 | |
|
public class ComentsAdapter extends BaseAdapter implements Filterable {
private List<Coment> originalData = null; private List<Coment> filteredData = null; private LayoutInflater mInflater; private ItemFilter mFilter = new ItemFilter();
/** * @param context * @param resource * @param objects */ public ComentsAdapter(Context context, List<Coment> data) { this.filteredData = data; this.originalData = data; mInflater = LayoutInflater.from(context); }
@Override public View getView(int position, View view, ViewGroup parent) { View updateView; ViewHolder viewHolder; if (view == null) {
updateView = mInflater.inflate(R.layout.coments_item, null);
viewHolder = new ViewHolder();
// Používate¾ské meno èloveka, ktorý napísal komentár viewHolder.comentsUsernameView = (TextView) updateView .findViewById(R.id.coments_item_login);
// Dátum a èas vytvorenia komentáru viewHolder.comentsDateView = (TextView) updateView .findViewById(R.id.coments_item_date);
// Textový obsah komentáru viewHolder.comentsValueView = (TextView) updateView .findViewById(R.id.coments_item_value);
updateView.setTag(viewHolder); } else { updateView = view; viewHolder = (ViewHolder) updateView.getTag(); }
viewHolder.comentsUsernameView.setText(filteredData.get(position) .getUsername().toString()); viewHolder.comentsDateView.setText(filteredData.get(position).getDate() .toString()); viewHolder.comentsValueView.setText(filteredData.get(position) .getValue().toString());
return updateView; }
@Override public int getCount() { return filteredData.size(); }
@Override public Coment getItem(int position) { return filteredData.get(position); }
@Override public long getItemId(int position) { return position; }
public Filter getFilter() { return mFilter; }
private class ItemFilter extends Filter { @Override protected FilterResults performFiltering(CharSequence constraint) {
String filterString = constraint.toString().toLowerCase();
FilterResults results = new FilterResults();
final List<Coment> list = originalData;
int count = list.size(); final ArrayList<Coment> nlist = new ArrayList<Coment>(count);
Coment filterableComent;
for (int i = 0; i < count; i++) { filterableComent = list.get(i); if (filterableComent.getValue().toLowerCase() .contains(filterString)) { nlist.add(filterableComent); } }
results.values = nlist; results.count = nlist.size(); return results; }
@SuppressWarnings("unchecked") @Override protected void publishResults(CharSequence constraint, FilterResults results) { filteredData = (ArrayList<Coment>) results.values; notifyDataSetChanged(); } };
private static class ViewHolder { public TextView comentsUsernameView; public TextView comentsDateView; public TextView comentsValueView; }
/** * */ public void clear() { filteredData.clear(); notifyDataSetChanged(); }
/** * @param com */ public void add(Coment com) { filteredData.add(com); notifyDataSetChanged(); }
} Takto nejako vyzerá vlastný adaptér, je tam toho viac ale použitie je jednoduché. To filtrovanie je ak používaš potom vyhľadávanie výsledkov v zozname.
_________________ rMBP 13 2015 iPhone 7
|
|
Registrovaný: 11.02.09 Prihlásený: 28.03.23 Príspevky: 2208 Témy: 145 Bydlisko: Liptovský M... |
Aha tak skor ci neskor ma to aj tak neminie ale zatial mi staci velmi jednoduchy ListView s obycajnym TextView, kde sa budu nacitavat medzicasy. Ale potreboval by som aby sa tie medzicasy ukladali v tom ListView od vrchu a nie na koniec na spodok. Nevies ci je na to nejaky parameter alebo funkcia?
_________________ "Only a warrior chooses pacifism, others are condemned to it." - unknown author |
|
Registrovaný: 05.04.11 Príspevky: 1693 Témy: 50 Bydlisko: Žilina, Pop... | Napísal XOLOO: 23.04.2014 19:56 | |
|
priamo listview-vom nie je nič také podporované ak dobre viem, ale skús to urobiť takto Kód: tvojadapter.add(0, tvojObjekt);
_________________ rMBP 13 2015 iPhone 7
|
|
Registrovaný: 11.02.09 Prihlásený: 28.03.23 Príspevky: 2208 Témy: 145 Bydlisko: Liptovský M... |
Metoda add ma len jeden parameter a to dany objekt, ale vsimol som si ze je tam aj metoda insert(T object, int index), kde index je pozicia kam sa ma vlozit novy objekt a tu som nastavil na 0. Funguje to perfektne.
_________________ "Only a warrior chooses pacifism, others are condemned to it." - unknown author |
|
Registrovaný: 11.02.09 Prihlásený: 28.03.23 Príspevky: 2208 Témy: 145 Bydlisko: Liptovský M... |
WTF? Snazim sa pridat do jedneho riadku ListView-u dve TextView a vsade citam, ze na to treba vytvorit vlastny adapter a prepisat metodu getView, ktora ziska dany riadok kde sa budu doplnat tie textview. Vsade sa pise to iste, vsetkemu rozumiem, a z na to ze vsade tym indickym radoby programatorom v kazdom priklade chyba vysvetlena jedna a ta ista podstatna vec. Odkial z rite volaju tu metodu getView a co za parametre jej predavaju? Kód: public View getView (int position, View convertView, ViewGroup parent) Kde mozem najst nejaky normalny priklad, kde si mozem pozret tento jeden blby riadok, kde sa vola tato metoda a co za blby parameter View convertView mu to predavaju??? Napr. tu: http://hmkcode.com/android-custom-listview-items-row/ Ako to moze fungovat ked sa vsade dusuju ze treba prepisat metodu getView a potom ju nikde nevolaju??? Dokonca tento exot ani nijak nevyuziva ten parameter convertView. Kde je to poriadne vysvetlene?
_________________ "Only a warrior chooses pacifism, others are condemned to it." - unknown author |
|
Registrovaný: 05.04.11 Príspevky: 1693 Témy: 50 Bydlisko: Žilina, Pop... | Napísal XOLOO: 05.05.2014 21:54 | |
|
getView je vlastne metóda, ktorá ti vráti jeden daný riadok listu, resp. view getview sa volá pre každý jeden záznam tvojho datasetu, alebo arraylistu, proste toho kde máš tie dáta, automatický. ten príklad je zlý používaj statickú triedu takto : Kód: public class RatingsAdapter extends ArrayAdapter<Rating> {
private List<Rating> mRatingsList;
/** * @param context - context of application * @param resource - layout file of row item * @param objects - datasource for row item */ public RatingsAdapter(Context context, int resource, List<Rating> objects) { super(context, resource, objects); mRatingsList = objects; }
/* (non-Javadoc) * @see android.widget.ArrayAdapter#getView(int, android.view.View, android.view.ViewGroup) */ @Override public View getView(int position, View view, ViewGroup parent) { View updateView; ViewHolder viewHolder; if (view == null) { LayoutInflater inflater = LayoutInflater.from(getContext()); updateView = inflater.inflate(R.layout.ratings_item, null);
viewHolder = new ViewHolder();
// Name of user viewHolder.ratingUserView = (TextView) updateView .findViewById(R.id.ratings_item_username);
// Rating message content viewHolder.ratingMessageView = (TextView) updateView .findViewById(R.id.ratings_item_message);
// Rating datetime viewHolder.ratingDateView= (TextView) updateView .findViewById(R.id.ratings_item_date);
// Users rating viewHolder.ratingBarView = (RatingBar) updateView .findViewById(R.id.ratings_item_ratingbar);
updateView.setTag(viewHolder); } else { updateView = view; viewHolder = (ViewHolder) updateView.getTag(); }
Rating rating = getItem(position); viewHolder.ratingUserView.setText(rating.getUserName()); viewHolder.ratingDateView.setText(rating.getDate()); viewHolder.ratingMessageView.setText(rating.getMessage()); viewHolder.ratingBarView.setRating(Float.parseFloat(rating.getRate()));
return updateView; }
private static class ViewHolder { public TextView ratingUserView; public TextView ratingMessageView; public TextView ratingDateView; public RatingBar ratingBarView;
} }
_________________ rMBP 13 2015 iPhone 7
|
|
| Stránka: 1 z 1
| [ Príspevkov: 11 ] | |
Podobné témy | Témy | Odpovede | Zobrazenia | Posledný príspevok |
---|
| Vkladanie údajov do ListView v Delphi, Visual Basic | 2 | 524 | 10.01.2011 13:09 coldak | | [Delphi] Progressbar do Listview v Delphi, Visual Basic | 2 | 631 | 10.09.2010 21:24 coldak | | ListView a WebBrowser (Visual Basic 2010) v Delphi, Visual Basic | 0 | 455 | 10.04.2012 11:30 lukas15 | | [delphi] listview load/save to file v Delphi, Visual Basic | 3 | 1122 | 18.04.2010 23:13 ha2 | | Dynamické objekty v PHP, ASP | 25 | 1075 | 04.01.2010 15:37 Tominator | | Dynamicke pole.. v PHP, ASP | 3 | 419 | 28.09.2011 22:56 Ando | | dynamicke obrazky v HTML, XHTML, XML, CSS | 11 | 770 | 09.02.2008 1:06 HAE07 | | Router - dynamicke IP v Siete | 3 | 411 | 09.08.2011 13:19 michalesku | | dynamické menenie udalosti onclick v JavaScript, VBScript, Ajax | 5 | 882 | 13.06.2008 22:47 emer | | Dynamicke programovanie - maximalizacia ceny v Assembler, C, C++, Pascal, Java | 2 | 612 | 25.06.2015 11:59 nBXXL | | Delphi - Dynamické vykreslovanie (runtime) komponentov v Delphi, Visual Basic | 3 | 546 | 15.10.2010 10:05 coldak | | Dynamicke pole v Triede C++ v Assembler, C, C++, Pascal, Java | 1 | 2007 | 19.11.2008 14:51 Dark_Raven | | DYNAMICKE vs. STATICKE pole smernikov !!!SUUURNE!!! v Assembler, C, C++, Pascal, Java | 6 | 2052 | 11.05.2009 8:48 sangokoko | | Dynamicke pole - problem s pridanim zatvoriek v JavaScript, VBScript, Ajax | 7 | 623 | 27.08.2011 15:08 chrono | | C++ a Dynamické pretypovanie funkcie z DLLky... v Assembler, C, C++, Pascal, Java | 4 | 759 | 07.08.2009 22:15 marian_sk | | Nacitavanie v JavaScript, VBScript, Ajax | 7 | 543 | 03.11.2012 18:58 Ravokman |
| Nemôžete zakladať nové témy v tomto fóre Nemôžete odpovedať na témy v tomto fóre Nemôžete upravovať svoje príspevky v tomto fóre Nemôžete mazať svoje príspevky v tomto fóre
|
|