Implemente um adaptador personalizado para sua classe:
public class MyClassAdapter extends ArrayAdapter<MyClass> {
private static class ViewHolder {
private TextView itemView;
}
public MyClassAdapter(Context context, int textViewResourceId, ArrayList<MyClass> items) {
super(context, textViewResourceId, items);
}
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = LayoutInflater.from(this.getContext())
.inflate(R.layout.listview_association, parent, false);
viewHolder = new ViewHolder();
viewHolder.itemView = (TextView) convertView.findViewById(R.id.ItemView);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
MyClass item = getItem(position);
if (item!= null) {
// My layout has only one TextView
// do whatever you want with your string and long
viewHolder.itemView.setText(String.format("%s %d", item.reason, item.long_val));
}
return convertView;
}
}
Para aqueles que não estão familiarizados com a estrutura do Android, isso é explicado em mais detalhes aqui: https://github.com/codepath/android_guides/wiki/Using-an-ArrayAdapter-with-ListView .
textViewResourceId
não é usado acima?Você pode simplesmente adicionar um
toString()
método ao MyClass, por http://developer.android.com/reference/android/widget/ArrayAdapter.html :fonte
MyClass
, precisará refatorar. Finalmente, geralmente é uma má idéia vincular a lógica de apresentação aos seus modelos. Os modelos não devem estar cientes de como eles são apresentados ao usuário.MyClass
exigiria que você adicionar uma classe dedicada chamadaMyClassView
que envolve o modelo subjacente (e fornece atoString( )
implementaçãoEu acho que essa é a melhor abordagem. O uso da classe ArrayAdapter genérica e estende seu próprio adaptador de objetos é tão simples como a seguir:
e aqui seu adaptador (exemplo):
e finalmente, como inicializá-lo:
Eu criei um Gist com o ArrayAdapter personalizável por gravidade do layout do TextView:
https://gist.github.com/m3n0R/8822803
fonte
Subclasse ArrayAdapter e substitua o método getView () para retornar sua própria exibição que contém o conteúdo que você deseja exibir.
fonte
Aqui está um exemplo rápido e sujo de como usar um ArrayAdapter se você não quiser se preocupar em estender a classe mãe:
fonte