Java 列表视图在滚动时丢失值,并在单击项目时获取工作位置
我有下面的Java 列表视图在滚动时丢失值,并在单击项目时获取工作位置,java,android,Java,Android,我有下面的列表视图,带有自定义适配器。我从服务处收到了一个ArrayAdapter,但scroll上出现了一些错误,值丢失了 public class AccountStatementArrayAdapter extends ArrayAdapter<ListaExtratos> { public AccountStatementArrayAdapter(Context context, int textViewResourceId, List<ListaExtrat
列表视图
,带有自定义适配器。我从服务处收到了一个ArrayAdapter
,但scroll上出现了一些错误,值丢失了
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;
}
}
公共类AccountStatementArrayAdapter扩展了ArrayAdapter{
public AccountStatementArrayAdapter(上下文上下文、int textViewResourceId、列表listaExtratos){
超级(上下文、textViewResourceId、listaExtratos);
this.listaExtratos=listaExtratos;
}
@凌驾
public int getItemViewType(int位置){
返回listaExtratos.get(position).getData()==null?节:科目\报表\项目;
}
@凌驾
public int getViewTypeCount(){
返回2;
}
@凌驾
public int getCount(){
返回listaExtratos.size();
}
@凌驾
public ListaExtratos getItem(内部位置){
返回listaExtratos.get(位置);
}
@凌驾
公共长getItemId(int位置){
返回位置;
}
公共视图getView(int位置、视图转换视图、视图组父视图){
视图v=转换视图;
如果(v==null){
拉平机vi;
vi=LayoutInflater.from(getContext());
v=vi.充气(R.布局.列表\项目\账户\报表,父项,假);
}
ListaExtratos p=getItem(位置);
如果(p!=null&&position!=0){
TextView simpleDescriptionTextView=(TextView)v.findViewById(R.id.list\u项目\账户\报表\简单\说明\字段);
TextView txtDataExtrato=(TextView)v.findViewById(R.id.txtDataExtrato);
TextView simpleValueTextView=(TextView)v.findViewById(R.id.list\u item\u account\u statement\u simple\u value\u field);
TextView CompletedDescriptionTextView=(TextView)v.findViewById(R.id.list\u item\u account\u statement\u complete\u description\u field);
TextView completeDateTextView=(TextView)v.findViewById(R.id.list\u item\u account\u statement\u complete\u date\u field);
TextView completeValueTextView=(TextView)v.findViewById(R.id.list\u item\u account\u statement\u complete\u value\u field);
TextView CompletedDocumentTextView=(TextView)v.findViewById(R.id.list\u item\u account\u statement\u complete\u document\u field);
TextView completeBalanceTextView=(TextView)v.findViewById(R.id.list\u item\u account\u statement\u complete\u balance\u field);
if(p.getHistorico()!=null){
simpleDescriptionTextView.setText(p.getHistorico());
}
如果(p.getValor()!=null){
if((p.getValor()!=null)&&(Double.parseDouble(p.getValor())<0)){
simpleValueTextView.setTextColor(Color.RED);
completeValueTextView.setTextColor(Color.RED);
completeValueTextView.setText(StringUtil.getStringValueFromBigDecimal(新的BigDecimal(p.getValor())));
simpleValueTextView.setText(StringUtil.getStringValueFromBigDecimal(新的BigDecimal(p.getValor())));
}否则{
simpleValueTextView.setTextColor(Color.BLACK);
completeValueTextView.setTextColor(Color.BLACK);
completeValueTextView.setText(StringUtil.getStringValueFromBigDecimal(新的BigDecimal(p.getValor())));
simpleValueTextView.setText(StringUtil.getStringValueFromBigDecimal(新的BigDecimal(p.getValor())));
}
}
if(p.getHistorico()!=null)
completeDescriptionTextView.setText(p.getHistorico());
如果(p.getData()!=null)
completeDateTextView.setText(p.getData());
如果(p.getDocto()!=null)
completedDocumentTextView.setText(p.getDocto());
completeBalanceTextView.setVisibility(View.GONE);
如果(!datas.contains(p.getData())){
txtdataextro.setVisibility(View.VISIBLE);
txtdataextro.setText(DateUtil.getDataPorExtenso(DateUtil.dateFromString(p.getData(),“dd/MM/yyyy”));
datas+=p.getData()+“;”;
}否则{
txtdataextro.setVisibility(View.GONE);
}
}
返回v;
}
}
适配器代码中存在一些错误
if(p.getHistorico() != null){
simpleDescriptionTextView.setText(p.getHistorico());
}
到
这些改变应该能解决你的问题
位置0是我的列表的内部检查。公司的要求。问题在于,要实现滚动,列表会丢失参考位置:(
if(p.getHistorico() != null){
simpleDescriptionTextView.setText(p.getHistorico());
}
else {
simpleDescriptionTextView.setText("");
}