Хорошо, чтобы расширить ответ выше, вы делаете «адаптер», подобный показанному в коде ниже:
package com.example.consumer.adapter;
import java.util.ArrayList;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
import com.example.consumer.R;
import com.example.consumer.model.AppModel;
import com.example.consumer.model.Deal;
public class DealListAdapter extends BaseAdapter {
private static ArrayList<Deal> dealArrayList = new ArrayList<Deal>();
private LayoutInflater inflator;
private AppModel appModel;
public DealListAdapter(Context context, ArrayList<Deal> results) {
dealArrayList = results;
inflator = LayoutInflater.from(context);
appModel = (AppModel) context.getApplicationContext();
}
public int getCount() {
if (dealArrayList == null)
return 0;
else
return dealArrayList.size();
}
public Object getItem(int position) {
try {
return dealArrayList.get(position);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
convertView = inflator.inflate(R.layout.list_item_deal, null);
holder = new ViewHolder();
holder.name = (TextView) convertView.findViewById(R.id.deal_listview_item_one);
holder.distance = (TextView) convertView.findViewById(R.id.deal_listview_item_two);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.name.setText(dealArrayList.get(position).getMerchantName() + ": "+ dealArrayList.get(position).getTitle());
holder.distance.setText(dealArrayList.get(position).getDistanceFormatted(appModel.getLocation()));
return convertView;
}
static class ViewHolder {
TextView name;
TextView distance;
}
}
Обратите внимание на использование ViewHolder - это сэкономит много вызовов "findViewById".
Чтобы использовать этот адаптер в вашем списке, вы используете этот код:
dealList = (ListView) findViewById(R.id.browse_list_view);
dealListAdapter = new DealListAdapter(this, dealList);
dealList.setAdapter(dealListAdapter);
Где в этом случае dealList
- это массив списков сделок (вы бы использовали другой пользовательский объект)
Надеюсь, это поможет вам при программировании OO ...:)