UMA*_*MAR 17 android listactivity
任何人都可以为我提供two_line_list_item示例吗?
ESV*_*ESV 37
我还没有找到实际使用内置的布局为例,android.R.layout.two_line_list_item和ListView的insted的ListActivity.所以这里.
如果您赶时间,TwoLineArrayAdapter.getView()下面的覆盖是使用默认two_line_list_item布局的重要部分.
您有一个定义列表项的类.我假设你有一系列这些.
public class Employee {
public String name;
public String title;
}
Run Code Online (Sandbox Code Playgroud)
这个抽象类可以重用,并且ListView以后更容易定义两行.您可以提供自己的布局,但两个参数构造函数使用内置two_line_list_item布局. 自定义列表项布局的唯一要求是它们必须使用@android:id/text1和@android:id/text2识别其TextView子项,就像它two_line_list_item一样.
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);
}
Run Code Online (Sandbox Code Playgroud)
最后,这是您编写的特定于Employee类的代码,以便它将在您的代码中呈现ListView.
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;
}
}
Run Code Online (Sandbox Code Playgroud)
在Activity的onCreate()方法中,您将拥有如下代码:
employees = new Employee[...];
//...populate the employee array...
employeeLV = (ListView)findViewById(R.id.employee_list);
employeeLV.setAdapter(new EmployeeArrayAdapter(this, employees);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
24153 次 |
| 最近记录: |