首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >有没有人能给我举个安卓Two_line_list_item的例子?

有没有人能给我举个安卓Two_line_list_item的例子?
EN

Stack Overflow用户
提问于 2010-01-21 20:53:38
回答 1查看 24.6K关注 0票数 17

有没有人能给我提供two_line_list_item的例子?

EN

回答 1

Stack Overflow用户

发布于 2012-03-22 06:57:20

我还没有找到一个使用内置布局、android.R.layout.two_line_list_itemListActivityListView实例的示例。这样就可以了。

如果您赶时间,下面的TwoLineArrayAdapter.getView() two_line_list_item override是使用默认布局的重要部分。

您的数据

您有一个定义列表项的类。我假设你有一个这样的数组。

代码语言:javascript
复制
public class Employee {
    public String name;
    public String title;
}

一个抽象的TwoLineArrayAdapter

这个抽象类可以重用,并使以后定义两行ListView变得更容易。您可以提供自己的布局,但是双参数构造函数使用内置的two_line_list_item布局。与TextView two_line_list_item 一样,自定义列表项布局的唯一要求是必须使用 @android:id/text1 @android:id/text2 来标识其two_line_list_item子项。

代码语言:javascript
复制
public abstract class TwoLineArrayAdapter<T> extends ArrayAdapter<T> {
        private int mListItemLayoutResId;

        public TwoLineArrayAdapter(Context context, T[] ts) {
            this(context, android.R.layout.two_line_list_item, ts);
        }

        public TwoLineArrayAdapter(
                Context context, 
                int listItemLayoutResourceId,
                T[] ts) {
            super(context, listItemLayoutResourceId, ts);
            mListItemLayoutResId = listItemLayoutResourceId;
        }

        @Override
        public android.view.View getView(
                int position, 
                View convertView,
                ViewGroup parent) {


            LayoutInflater inflater = (LayoutInflater)getContext()
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

            View listItemView = convertView;
            if (null == convertView) { 
                listItemView = inflater.inflate(
                    mListItemLayoutResId, 
                    parent, 
                    false);
            }

            // The ListItemLayout must use the standard text item IDs.
            TextView lineOneView = (TextView)listItemView.findViewById(
                android.R.id.text1);
            TextView lineTwoView = (TextView)listItemView.findViewById(
                android.R.id.text2);

            T t = (T)getItem(position); 
            lineOneView.setText(lineOneText(t));
            lineTwoView.setText(lineTwoText(t));

            return listItemView;
        }

        public abstract String lineOneText(T t);

        public abstract String lineTwoText(T t);
}

一个具体的TwoLineArrayAdapter

最后,下面是针对Employee类编写的代码,以便在ListView中呈现。

代码语言:javascript
复制
public class EmployeeArrayAdapter extends TwoLineArrayAdapter<Employee> {
    public EmployeeArrayAdapter(Context context, Employee[] employees) {
        super(context, employees);
    }

    @Override
    public String lineOneText(Employee e) {
        return e.name;
    }

    @Override
    public String lineTwoText(Employee e) {
        return e.title;
    }
}

Activity.onCreate()

在您的活动的onCreate()方法中,您将拥有如下代码:

代码语言:javascript
复制
    employees = new Employee[...];
    //...populate the employee array...

    employeeLV = (ListView)findViewById(R.id.employee_list);
    employeeLV.setAdapter(new EmployeeArrayAdapter(this, employees);
票数 37
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2109271

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档