2012-11-30 33 views
-2

我创建了main.xmllist.xml 我的Java类扩展menuActivity 我有2 vectors--填充有两个textviews自定义列表视图和一个复选框

Vector<String> name=new Vector<String>(); 
    Vector<String> nickname=new Vector<String>(); 

我创建了我custom holder class了。 我的问题是如何将这两个列表传递到我的适配器类。 我应该使用哪个适配器?

我试着将这两个向量放在另一个列表中,并将该列表发送给我的自定义adpater class.But它没有工作。 我被困在这里。 baseadpater和阵列适配器有什么区别?

+1

看看到API的例子 – Mikhaili

回答

1

所有BaseAdpater所做的都是巩固对于AbsListView所必需的回调。 ArrayAdater是一个更全面的适配器,可以将项目列表自动填充到TextView中。

对于你的情况,我建议扩大BaseAdapter:

class MyAdapter extends BaseAdapter { 
    Vector<String> names; 
    Vector<String> nicks; 

    public MyAdapter(Vector<String> nms, Vector<String> nks) { 
     if (nms.size() != nks.size()) 
      throw new RuntimeException("oops! Wrong sizes for vectors"); 
     name = nms; 
     nicks = nks; 
    } 

    @Override 
    public int getCount() { 
     return names.getSize() && nicks.getSize(); 
    } 

    @Override 
    public String getItem() { 
     // Can't really implement with two vectors. 
     return null; 
    } 

    @Override 
    public getView(int pos, View convert, ViewGroup mommy) { 
     LinearLayout ll = (LinearLayout)convert; 

     if (ll == null) 
      // Inflate the linear layout - preferrably from resources 

     ViewHolder vh = (ViewHolder)ll.getTag(); 

     if (vh == null) 
      // Inflate ViewHolder 

     vh.tvname.setText(names.get(pos)); 
     vh.tvnick.setText(nicks.get(pos)); 
     return ll; 
    } 

    class ViewHolder { 
     TextView tvname, tvnick; 
    } 
} 
相关问题