java-ListView在Android中可以有两种或多种不同类型的行布局吗?

java-ListView在Android中可以有两种或多种不同类型的行布局吗?,第1张

概述我现在在ListActivity中有一个非常简单的ListView,它仅显示文本值列表.这是我当前的代码:publicclassInfoActivityextendsListActivity{@OverridepublicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);List<

我现在在ListActivity中有一个非常简单的ListVIEw,它仅显示文本值列表.这是我当前的代码:

public class InfoActivity extends ListActivity {    @OverrIDe    public voID onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        List<String> values = new ArrayList<String>();        // loads up the values array here        // ...        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, androID.R.layout.simple_List_item_1, values);        setlistadapter(adapter);    }

我的InfoActivity XML文件中没有任何内容,因为我正在使用ListActivity.

我想做的是为行创建自定义布局.前5行将具有layoutA.xml,后5行将具有layoutB.xml.

我该怎么做呢?我不知道该从哪里开始.显然,我正在寻找最简单的代码.

解决方法:

这很容易,您只需要扩展ArrayAdapter.我的ArrayAdapter做两件事的方式有所不同:

>我的适配器采用了一组ResourceID,而不是传递一个ResourceID
> getVIEw()检查位置并加载适当的资源

这是一个简单的例子.如果您计划使其比上半部分看起来更复杂而下半部分有所不同,那么您应该覆盖getViewTypeCount()和getItemViewType().

工作示例:

public class Example extends Activity {    public class MyArrayAdapter<T> extends ArrayAdapter<T> {        LayoutInflater mInflater;        int[] mLayoutResourceIDs;        public MyArrayAdapter(Context context, int[] textVIEwResourceID, List<T> objects) {            super(context, textVIEwResourceID[0], objects);            mInflater = (LayoutInflater)context.getSystemService (Context.LAYOUT_INFLATER_SERVICE);            mLayoutResourceIDs = textVIEwResourceID;        }        @OverrIDe        public VIEw getVIEw(int position, VIEw convertVIEw, VIEwGroup parent) {            if (convertVIEw == null && position > 2)                convertVIEw = mInflater.inflate(mLayoutResourceIDs[1], parent, false);            return super.getVIEw(position, convertVIEw, parent);        }    }    @OverrIDe    public voID onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        String[] array = new String[] {"one", "two", "three", "four", "five", "six"};        List<String> List = new ArrayList<String>();        Collections.addAll(List, array);        ListVIEw ListVIEw = new ListVIEw(this);        ListVIEw.setAdapter(new MyArrayAdapter<String>(this, new int[] {androID.R.layout.simple_List_item_1, androID.R.layout.simple_List_item_single_choice}, List));        setContentVIEw(ListVIEw);    }}
总结

以上是内存溢出为你收集整理的java-ListView在Android中可以有两种或多种不同类型的行布局吗?全部内容,希望文章能够帮你解决java-ListView在Android中可以有两种或多种不同类型的行布局吗?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1085701.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存