我正在尝试使用视图支架制作自定义适配器。
Log.i(CardHolderConstants.LOGIN_INFO, "cardsize>0");
myListAdapater=new MyListAdapater(this,cardList);
listview.setAdapter(myListAdapater);
在这里,我称该类为扩展baseadpater的mylist。CardList包含从数据库中检索到的卡对象的列表。
static class ViewHolder{
public TextView cardId,cardNumber,cardName;
}
class MyListAdapater extends BaseAdapter{
List<Card> cardListForDisplay;
LayoutInflater inflater ; Context context;
public MyListAdapater(Context context,List<Card> cardListForDisplay) {
super();
Log.i(CardHolderConstants.LOGIN_INFO, "inside mylist");
this.cardListForDisplay = cardListForDisplay;
this.context=context;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return cardListForDisplay.size();
}
@Override
public Object getItem(int arg0) {
// TODO Auto-generated method stub
return null;
}
@Override
public long getItemId(int arg0) {
// TODO Auto-generated method stub
return 0;
}
@Override
public View getView(int arg0, View view, ViewGroup parent) {
View rowView = view;
ViewHolder holder;
if(rowView==null){
holder=new ViewHolder();
inflater = ((Activity) context).getLayoutInflater();
rowView = inflater.inflate(R.layout.card_list, parent, false);
holder.cardId=(TextView)rowView.findViewById(R.id.displayCardID);
holder.cardName=(TextView)rowView.findViewById(R.id.displayCardName);
holder.cardNumber=(TextView)rowView.findViewById(R.id.displayCardNumber);
rowView.setTag(holder);
}
else{
holder=(ViewHolder) rowView.getTag();
}
Log.i(CardHolderConstants.CARD_HOLDER, "inside getView class");
for(Card card:cardListForDisplay){
if(card!=null){
long cardID= card.getCardId();
String cardName=card.getCardName();
long cardNumber=card.getCardNumber();
if(Utils.isNumberNullOrEmpty(cardID)==false && Utils.isNumberNullOrEmpty(cardNumber)==false
&& Utils.isStringNullOrEmpty(cardName)==false)
holder.cardId.setText(Long.toString(cardID));
holder.cardNumber.setText(Long.toString(cardNumber));
holder.cardName.setText(cardName);
}
}
return rowView;
}
}
}
当类初始化时,不会调用get view方法。
构造函数中的日志被打印出来。为什么我的getview
方法没有被调用。该列表正在显示。但正在显示相同的项目。在listview中进行迭代的正确方法是什么
你有
@Override
public int getCount() {
// TODO Auto-generated method stub
return 0;
}
应该
@Override
public int getCount() {
// TODO Auto-generated method stub
return cardListForDisplay.size();
}
也改为
public Object getItem(int arg0) {
return arg0; // can be cardListForDisplay.get(arg0)
}
@Override
public long getItemId(int arg0) {
// TODO Auto-generated method stub
return arg0; // can be cardListForDisplay.indexOf(getItem(arg0))
}
编辑:
Card card = (Card) cardListForDisplay.get(position);
long cardID= card.getCardId();
String cardName=card.getCardName();
long cardNumber=card.getCardNumber();
holder.cardId.setText(Long.toString(cardID));
holder.cardNumber.setText(Long.toString(cardNumber));
holder.cardName.setText(cardName);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句