2016-06-13 4 views
-1

私はカスタムアダプターでListView以下を持っています。私はサービスからArrayAdapterを受け取ったが、何か間違ったことがスクロールで起こっていて、値が失われている。リストビューはスクロールの値を失い、アイテムのクリックでworgポジションを取得します

public class AccountStatementArrayAdapter extends ArrayAdapter<ListaExtratos> { 

    public AccountStatementArrayAdapter(Context context, int textViewResourceId, List<ListaExtratos> listaExtratos) { 
     super(context, textViewResourceId, listaExtratos); 
     this.listaExtratos = listaExtratos; 
    } 

    @Override 
    public int getItemViewType(int position) { 
     return listaExtratos.get(position).getData() == null ? SECTION : ACCOUNT_STATEMENT_ITEM; 
    } 

    @Override 
    public int getViewTypeCount() { 
     return 2; 
    } 

    @Override 
    public int getCount() { 
     return listaExtratos.size(); 
    } 

    @Override 
    public ListaExtratos getItem(int position) { 
     return listaExtratos.get(position); 
    } 

    @Override 
    public long getItemId(int position) { 
     return position; 
    } 

    public View getView(int position, View convertView, ViewGroup parent) { 

     View v = convertView; 

     if (v == null) { 
      LayoutInflater vi; 
      vi = LayoutInflater.from(getContext()); 
      v = vi.inflate(R.layout.list_item_account_statement, parent, false); 
     } 

     ListaExtratos p = getItem(position); 

     if (p != null && position != 0) { 

      TextView simpleDescriptionTextView = (TextView) v.findViewById(R.id.list_item_account_statement_simple_description_field); 
      TextView txtDataExtrato = (TextView) v.findViewById(R.id.txtDataExtrato); 
      TextView simpleValueTextView = (TextView) v.findViewById(R.id.list_item_account_statement_simple_value_field); 
      TextView completeDescriptionTextView = (TextView) v.findViewById(R.id.list_item_account_statement_complete_description_field); 
      TextView completeDateTextView = (TextView) v.findViewById(R.id.list_item_account_statement_complete_date_field); 
      TextView completeValueTextView = (TextView) v.findViewById(R.id.list_item_account_statement_complete_value_field); 
      TextView completeDocumentTextView = (TextView) v.findViewById(R.id.list_item_account_statement_complete_document_field); 
      TextView completeBalanceTextView = (TextView) v.findViewById(R.id.list_item_account_statement_complete_balance_field); 

      if(p.getHistorico() != null){ 
       simpleDescriptionTextView.setText(p.getHistorico()); 
      } 

      if(p.getValor() != null){ 
       if ((p.getValor() != null) && (Double.parseDouble(p.getValor()) < 0)) { 
        simpleValueTextView.setTextColor(Color.RED); 
        completeValueTextView.setTextColor(Color.RED); 
        completeValueTextView.setText(StringUtil.getStringValueFromBigDecimal(new BigDecimal(p.getValor()))); 
        simpleValueTextView.setText(StringUtil.getStringValueFromBigDecimal(new BigDecimal(p.getValor()))); 
       } else { 
        simpleValueTextView.setTextColor(Color.BLACK); 
        completeValueTextView.setTextColor(Color.BLACK); 
        completeValueTextView.setText(StringUtil.getStringValueFromBigDecimal(new BigDecimal(p.getValor()))); 
        simpleValueTextView.setText(StringUtil.getStringValueFromBigDecimal(new BigDecimal(p.getValor()))); 
       } 
      } 
      if(p.getHistorico() != null) 
       completeDescriptionTextView.setText(p.getHistorico()); 

      if(p.getData() != null) 
       completeDateTextView.setText(p.getData()); 

      if(p.getDocto() != null) 
       completeDocumentTextView.setText(p.getDocto()); 

      completeBalanceTextView.setVisibility(View.GONE); 

      if (!datas.contains(p.getData())) { 
       txtDataExtrato.setVisibility(View.VISIBLE); 
       txtDataExtrato.setText(DateUtil.getDataPorExtenso(DateUtil.dateFromString(p.getData(), "dd/MM/yyyy"))); 
       datas += p.getData() + ";"; 
      } else { 
       txtDataExtrato.setVisibility(View.GONE); 
      } 
     } 
     return v; 
    } 
} 

答えて

0

アダプタコードにはいくつかのバグがあります。位置のための

  1. Removeチェック!= 0
  2. あなたは各ビューの空のテキストを設定する他にどこにもチェックします。

たとえば、 :これらの変更は、あなたの問題を解決する必要があり、この

if(p.getHistorico() != null){ 
       simpleDescriptionTextView.setText(p.getHistorico()); 
      } 

if(p.getHistorico() != null){ 
       simpleDescriptionTextView.setText(p.getHistorico()); 
      } 
else { 
     simpleDescriptionTextView.setText(""); 
} 

に変更し 。

+0

ポジション0は私のリストの内部チェックです。会社の要件。問題は、スクロールを実現するために、リストが参照位置を失うことです:( –

関連する問題