我正在尝试复制此Google即时贴界面.我并不担心卡片的感觉,但我更担心视图的构建方式.
我正在考虑使用一个适配器,该适配器返回与该行相对应的不同布局.但是正如您所看到的,两个视图都包含彼此不相关的信息.
是否可以使用具有不同行适配器的ListVIEw?
或者如何使用自定义视图来实现这一目标?
解决方法:
首先,您需要为此创建一个CustomAdapter:
public class CustomAdapter extends BaseAdapter { ArrayList<VIEw> vIEws; Context context; public CustomAdapter(Context context, ArrayList<VIEw> vIEws){ this.vIEws = vIEws; this.context = context; } @OverrIDe public int getCount() { return vIEws.size(); } @OverrIDe public Object getItem(int i) { return i; } @OverrIDe public long getItemID(int i) { return i; } @OverrIDe public VIEw getVIEw(int i, VIEw vIEw, VIEwGroup vIEwGroup) { VIEw rowVIEw = vIEws.get(i); /*set the vIEws of the rowVIEw here but take note use try catch since you can't be sure if the vIEw will be present or not this is the part where I do not advice it to have different custom vIEws per row but it's all yours to do your tricks*/ return rowVIEw; }}
要使用它,这是我在create上的示例方法:
@OverrIDe protected voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentVIEw(R.layout.test); ArrayList<VIEw> vIEws = new ArrayList<VIEw>(); CustomAdapter adapter = new CustomAdapter(MainActivity.this,vIEws); ListVIEw custom_List = (ListVIEw)findVIEwByID(R.ID.List_custom); custom_List.setAdapter(adapter); LayoutInflater inflater = (LayoutInflater) getBaseContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); VIEw vIEw1 = inflater.inflate(R.layout.vIEw1, null); VIEw vIEw2 = inflater.inflate(R.layout.vIEw2, null); vIEws.add(vIEw1); vIEws.add(vIEw2); adapter.notifyDataSetChanged();}
如果有需要,请执行解决方法,但基本上就是这样.膨胀视图,将其传递到arrayList上,然后在ListVIEw上进行设置.
总结以上是内存溢出为你收集整理的android-根据行创建具有不同类型的适配器的视图全部内容,希望文章能够帮你解决android-根据行创建具有不同类型的适配器的视图所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)