Ich suche Internet und ich handle nicht mit meinem Problem.Falsche TextView-Farbe nach ListView-Filter
Ich habe ListView mit fünf TextView. Einer von TextView ist in einigen Situationen gefärbt. Alles funktioniert einwandfrei, es sei denn, mein ListView wird nicht gefiltert. NACH FILTERN Listenansicht, Farbe ändert sich (in getView) in Textansicht mojView_holder.tekst_wart
funktioniert nicht und bleiben Standard.
einige könnte mir vielleicht helfen Lösung zu finden, bitte ...
Diese Fragmente meines Adapter-Code ist:
public class wiersz_listy_zamowien extends BaseAdapter implements Filterable {
ArrayList<Zamowienie> zamowienia;
CustomFilter filter;
ArrayList<Zamowienie> filterList;
private Context ctx;
public wiersz_listy_zamowien(Context ctx, ArrayList<Zamowienie> zamowienia) {
this.ctx = ctx;
this.zamowienia = zamowienia;
this.filterList = zamowienia;
}
@Override
public int getCount() {
return zamowienia.size();
}
@Override
public Object getItem(int position) {
return zamowienia.get(position);
}
@Override
public long getItemId(int position) {
return zamowienia.indexOf(getItem(position));
}
private class ViewHolderPattern {
TextView tekst_nr;
TextView tekst_naz;
TextView tekst_wart;
TextView tekst_data;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolderPattern mojView_holder;
if (convertView == null) {
mojView_holder = new ViewHolderPattern();
LayoutInflater inflater = (LayoutInflater) ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.wiersz_listy_zamowien, parent, false);
mojView_holder.tekst_nr = (TextView) convertView.findViewById(R.id.nr_zam);
mojView_holder.tekst_naz = (TextView) convertView.findViewById(R.id.nazwa_zam);
mojView_holder.tekst_wart = (TextView) convertView.findViewById(R.id.wart_zam);
mojView_holder.tekst_data = (TextView) convertView.findViewById(R.id.data_zloz_zam);
convertView.setTag(mojView_holder);
} else {
mojView_holder = (ViewHolderPattern) convertView.getTag();
}
//Ustawienie danych
mojView_holder.tekst_nr.setText(zamowienia.get(position).getId());
mojView_holder.tekst_naz.setText(zamowienia.get(position).getNazwa());
mojView_holder.tekst_data.setText(zamowienia.get(position).getData());
mojView_holder.tekst_wart.setText(String.format("%.2f", Float.parseFloat(zamowienia.get(position).getPlatn())) + " zł ");
//kolory kwoty zależne od statusu płatności
switch(zamowienia.get(position).getStatusPlatn()) {
case "0": mojView_holder.tekst_wart.setTextColor(convertView.getContext().getResources().getColor(R.color.zamZgloszColor)); break;
default: mojView_holder.tekst_wart.setTextColor(0xFF000000); //silver
}
return convertView;
}
@Override
public Filter getFilter() {
// TODO Auto-generated method stub
if(filter == null)
{
filter=new CustomFilter();
}
return filter;
}
//INNER CLASS
class CustomFilter extends Filter
{
@Override
protected FilterResults performFiltering(CharSequence constraint) {
// TODO Auto-generated method stub
FilterResults results=new FilterResults();
if(constraint != null && constraint.length()>0)
{
//CONSTARINT TO UPPER
constraint=constraint.toString().toUpperCase();
ArrayList<Zamowienie> filters=new ArrayList<Zamowienie>();
//get specific items
for(int i=0;i<filterList.size();i++)
{
if(filterList.get(i).getNazwa().toUpperCase().contains(constraint))
{
Zamowienie p=new Zamowienie(filterList.get(i).getId(), filterList.get(i).getNazwa(), filterList.get(i).getPlatn(), filterList.get(i).getStatus(), filterList.get(i).getStatusPlatn(), filterList.get(i).getData());
filters.add(p);
}
}
results.count=filters.size();
results.values=filters;
}else
{
results.count=filterList.size();
results.values=filterList;
}
return results;
}
@Override
protected void publishResults(CharSequence constraint, FilterResults results) {
// TODO Auto-generated method stub
zamowienia=(ArrayList<Zamowienie>) results.values;
notifyDataSetChanged();
}
}
ernst 'Zamowienie p = neue Zamowienie (...); filters.add (p)'? Warum nicht 'filters.add (filterList.get (i))'? ... Haben Sie den Code debuggt? ... Ich wette, dass aus irgendwelchen Gründen (z. B. die Konstruktorparameter in Zamowienia scheinen alle ein String zu sein - so ist es einfach) '! Zamowienia.get (position) .getStatusPlatn(). Equals (" 0 ")', immer ... – Selvin
Warum erweitern so viele Leute 'BaseAdapter' immer wieder, anstatt einige bereits vorhandene Adapter zu verwenden (grundlegende Fehler in der benutzerdefinierten Implementierung zu vermeiden)? – pskink