【问题标题】:Values are not getting displayed in listview using getter setter class使用 getter setter 类未在列表视图中显示值
【发布时间】:2015-01-14 07:02:07
【问题描述】:

在我的应用程序中有一个列表视图,其中我必须使用复选框显示 4 个值作为每个列表项...这些值来自数据库。问题是数据库中的值没有分配给listitem 文本视图..;

这是我要分配的活动

private List<PaymentDueModel> getModel() {

    List<PaymentDueModel> list = new ArrayList<PaymentDueModel>();

    try {

        Cursor cursor = database.fetchCursor("member_dues", new String[] {
                "INST_DUE_DATE", "PDI_AMOUNT", "TXNTYPE" },
                "MEMBERSHIP_ID = '" + MEMBERSHIP_ID + "'", null, null,
                null, null, null);
        if (cursor != null && cursor.getCount() > 0) {

            cursor.moveToFirst();
            do {
                list.add(get(cursor.getString(0), cursor
                        .getString(1), cursor.getString(2)));

            } while (cursor.moveToNext());
        }

    } catch (Exception e) {
        e.printStackTrace();

        list = null;
    }

    Log.e("list",list.toString());

    return list;
}

private PaymentDueModel get(String n,String t, String s) {
    return new PaymentDueModel(n,t,s);
  }

这是适配器:

public class PendingListAdapter extends ArrayAdapter<PaymentDueModel> {

  private final List<PaymentDueModel> list;
  private final Activity context;

  public PaymentDueModel element;

  public PendingListAdapter(Activity context, List<PaymentDueModel> list) {
    super(context, R.layout.list_item_pending, list);
    this.context = context;
    this.list = list;

  }

  static class ViewHolder {
     TextView dueDate;
     TextView amount;
     TextView paymentType;
     CheckBox checkbox;
  }

  @Override
  public View getView(int position, View convertView, ViewGroup parent) {
    View view = null;
    try
    {
    if (convertView == null) {
      LayoutInflater inflator = context.getLayoutInflater();
      view = inflator.inflate(R.layout.list_item_pending, null);
      final ViewHolder viewHolder = new ViewHolder();

      viewHolder.dueDate =(TextView)view.findViewById(R.id.txt_due_date);
      viewHolder.amount=(TextView)view.findViewById(R.id.txt_amount);
      viewHolder.paymentType=(TextView)view.findViewById(R.id.txt_payment_type);

      viewHolder.checkbox = (CheckBox) view.findViewById(R.id.check_Status);

//        viewHolder.checkbox
//          .setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
//
//            @Override
//            public void onCheckedChanged(CompoundButton buttonView,
//                boolean isChecked) {
//              PaymentDueModel element = (PaymentDueModel) viewHolder.checkbox
//                  .getTag();
//              
//            }
//          });

      view.setTag(viewHolder);
      viewHolder.checkbox.setTag(list.get(position));
    } else {
      view = convertView;
      ((ViewHolder) view.getTag()).checkbox.setTag(list.get(position));
    }

    ViewHolder holder = (ViewHolder) view.getTag();

    holder.checkbox.setChecked(list.get(position).isSelected());
    holder.dueDate.setTag(list.get(position).getdueDate());
    holder.amount.setTag(list.get(position).getamount());
    holder.paymentType.setTag(list.get(position).getpaymentType());

  }

    catch(Exception e)
    {
        e.printStackTrace();
    }
    return view;

  }

}

这是 getter setter 类:

public class PaymentDueModel {

private String dueDate;
private String amount;
private String paymentType;
private boolean selected;

public PaymentDueModel(String dueDate, String amount, String paymentType) {
    this.dueDate = dueDate;
    this.amount = amount;
    this.paymentType = paymentType;
    selected = false;

}

public String getdueDate() {
    return dueDate;
}

  //    public void setdueDate(String dueDate) {
  //        this.dueDate = dueDate;
   //   }

public String getamount() {
    return amount;
}

//  public void setamount(String amount) {
//      this.amount = amount;
//  }

public String getpaymentType() {
    return paymentType;
}

//  public void setpaymentType(String paymentType) {
//      this.paymentType = paymentType;
//  }

public boolean isSelected() {
    return selected;
}

public void setselected(boolean selected) {
    this.selected = selected;
}

}

适配器在 onCreate 中设置。 我在这里设置适配器..

pending_adapter = new PendingListAdapter(getActivity(), getModel());
        member_pending_list.setAdapter(pending_adapter);

请帮助...我无法弄清楚问题..

【问题讨论】:

  • Shivani,您将适配器设置为 listview 的邮政编码。
  • 为什么所有那些setter 方法都被注释掉了
  • @Techfist 我已经编辑了问题...请看一下
  • @kaushik 因为它没有在任何地方使用...我必须在哪里使用它?
  • 你的 Adapter 中没有 setText 方法

标签: android listview


【解决方案1】:

而不是setTag

holder.dueDate.setTag(list.get(position).getdueDate());
holder.amount.setTag(list.get(position).getamount());
holder.paymentType.setTag(list.get(position).getpaymentType());

使用setText

holder.dueDate.setText(list.get(position).getdueDate());
holder.amount.setText(list.get(position).getamount());
holder.paymentType.setText(list.get(position).getpaymentType());

【讨论】:

    猜你喜欢
    • 2011-06-13
    • 2014-12-08
    • 2017-09-17
    • 2023-03-20
    • 2019-11-26
    • 2023-03-07
    • 1970-01-01
    • 1970-01-01
    • 2015-03-24
    相关资源
    最近更新 更多