0

获取列表大小为 46。我得到了 constrator 中的所有值。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{}
        }
        }

谢谢,

4

2 回答 2

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() 被视为您在适配器类中声明的类变量。因此,如果您想查找传入函数的 List 的大小,则需要在构造函数中删除msgList1.size () 的前面。并分配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;
}
于 2012-08-24T10:10:49.263 回答
0

在你的课堂上,你有这个领域:

List<MsgStandard> msgList1=new ArrayList<MsgStandard>();

现在,你的构造函数也接受一个 type 的参数,List同名:msgList1

问题是您在构造函数中调用以下行

size=this.msgList1.size();

关键字this引用当前对象,因此它将引用您的msgList1成员字段,而不是构造函数参数。

由于msgList1成员字段还没有任何值,所以size()会返回 0。因此getCount()调用该方法时,它返回 0,并且 Adapter 认为数组中没有元素。

所以,要修复它,在你的构造函数中你应该去掉这个关键字,并引用构造函数参数:

size=msgList1.size();

此外,您应该在构造函数中再添加一行,并将构造函数中的列表分配给您的类成员:

this.msgList1 = msgList1;
于 2012-08-24T10:26:17.250 回答