custom - ¿Puede alguien proporcionarme un ejemplo de Two_line_list_item en Android?
listview android eclipse (1)
Todavía tengo que encontrar un ejemplo que realmente use el diseño incorporado, android.R.layout.two_line_list_item
y un ListView
ListActivity
de ListActivity
. Así que aquí va.
Si tiene prisa, la TwoLineArrayAdapter.getView()
continuación es la parte importante de usar el diseño predeterminado de two_line_list_item
.
Tu información
Tienes una clase que define los elementos de tu lista. Asumiré que tienes una serie de estos.
public class Employee {
public String name;
public String title;
}
Un resumen TwoLineArrayAdapter
Esta clase abstracta se puede reutilizar y hace que la definición de un ListView
dos líneas sea mucho más fácil más adelante. Puede suministrar su propio diseño, pero el constructor de dos argumentos utiliza el diseño two_line_list_item
. El único requisito para los diseños de elementos de lista personalizados es que deben usar @android:id/text1
y @android:id/text2
para identificar sus hijos de TextView
, tal como two_line_list_item
hace 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);
}
Un concreto TwoLineArrayAdapter
Finalmente, aquí está el código que escribe específico para su clase de Empleado para que se muestre en su 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;
}
}
Activity.onCreate ()
En el método onCreate()
tu Actividad, tendrás un código que se verá así:
employees = new Employee[...];
//...populate the employee array...
employeeLV = (ListView)findViewById(R.id.employee_list);
employeeLV.setAdapter(new EmployeeArrayAdapter(this, employees);
¿Puede alguien proporcionarme ejemplo de two_line_list_item?