获取列表大小为46。 我在构造函数中得到了所有的价值。 getView没有调用,
我的代码,
public class Atom_1_Adapter extends BaseAdapter {
private Activity activity;
List<MsgStandard> msgList1=new ArrayList<MsgStandard>();
private LayoutInflater inflater=null;
ImageLoader imageLoader;
int size=0;
String tag="Atom_1_Adapter";
public Atom_1_Adapter(Activity activity, List<MsgStandard> msgList1) {
this.activity = activity;
this.msgList1 = msgList1
size=this.msgList1.size();
inflater = (LayoutInflater)this.activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
imageLoader=new ImageLoader(activity);
}
@Override
public int getCount() {
return size;
}
@Override
public Object getItem(int position) {
return position;
}
@Override
public long getItemId(int position) {
return position;
}
class ViewHolder{
ImageView image1,image2;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
System.out.println("enter get view--->>>>>>");
View vi=convertView;
ViewHolder holder=new ViewHolder();
try{
vi=inflater.inflate(R.layout.homepagelist_1_adapter,null);
//here my layout declaration
vi.setTag(holder);
//here set value for TextView,ImageView... etc
return vi;
}catch{}
}
}
谢谢,
答案 0 :(得分:1)
试试这个。
更改构造函数代码。
public Atom_1_Adapter(Activity activity, List<MsgStandard> msgList1)
{
this.activity = activity;
this.msgList1 = msgList1
size=this.msgList1.size();
inflater = (LayoutInflater)this.activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
imageLoader=new ImageLoader(activity);
}
注意: this.msgList1.size()被视为您在Adapter Class中声明的类变量。因此,如果要查找函数中传递的List的大小,则需要在构造函数中删除msgList1.size()前面的 this 。并分配this.msgList1 = msgList1;
。 查看我的代码
public View getView(int position, View convertView, ViewGroup parent)
{
ViewHolder holder;
if (convertView == null)
{
convertView = mInflater.inflate(R.layout.menu_row, null);
holder = new ViewHolder();
holder.textViewMenuName = (TextView)convertView.findViewById(R.id.textViewMenuName);
convertView.setTag(holder);
}
else
{
holder = (ViewHolder) convertView.getTag();
}
holder.textViewMenuName.setText("Test");
return convertView;
}
答案 1 :(得分:0)
在你的课堂上你有这个领域:
List<MsgStandard> msgList1=new ArrayList<MsgStandard>();
现在,您的构造函数还采用类型为List
的参数,名称相同:msgList1
问题是你在构造函数中调用以下行
size=this.msgList1.size();
关键字this
是指当前对象,因此它将引用您的msgList1
成员字段,而不是构造函数参数。
由于msgList1
成员字段dos还没有任何值,size()
将返回0.因此,当调用getCount()
方法时,它返回0,并且适配器认为数组中没有元素。
所以,要修复它,在你的构造函数中你应该摆脱这个关键字,并参考构造函数参数:
size=msgList1.size();
此外,您应该在构造函数中再添加一行,并将构造函数中的列表分配给您的类成员:
this.msgList1 = msgList1;