0
私はインターネットを検索していますが、私の問題は解決しません。ListViewフィルタの後にTextViewの色が正しく表示されない
5つのTextViewを持つListViewがあります。 TextViewの1つは、状況によっては色付けされています。私のListViewがフィルタリングされない限り、すべて正常に動作します。リストビューをフィルタした後、テキストビューの色の変更(getViewの切り替え)mojView_holder.tekst_wart
が機能せず、デフォルトのままです。
たぶん、いくつかの解決策を見つけるために私を助けることができる、...
これは私のアダプターのコードの断片でください
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();
}
}
真剣に 'Zamowienie p = new Zamowienie(...); filters.add(p)'?どうして 'filters.add(filterList.get(i))'? ...コードをデバッグしましたか? ...私は何らかの理由でfxを使うと、Zamowieniaのコンストラクタのパラメータをすべて文字列のように見せているので、簡単です) '!zamowienia.get(position).getStatusPlatn()。equals(" 0 ")'、常に... – Selvin
なぜ多くの人が 'BaseAdapter'を何度も何度も拡張しています(カスタム実装の基本的なエラーを避けるために) – pskink