Поскольку Дмитрий Данилык не добавил свое решение в качестве ответа, я добавляю его, чтобы закрыть этот вопрос. Тем не менее, в последние месяцы я освоил эту область, поэтому я добавил немного другой ответ, когда он писал.
Прежде всего, нам нужны массивы для отображения в виде списка. Это представление списка построено на специальном адаптере, который получает элементы из массивов. В этом пользовательском адаптере мы можем делать что угодно с элементами в каждой строке списка, независимо от того, о каких элементах мы говорим. Будь то просмотр текста, просмотр изображений или флажок и т. Д.
Давайте представим, что у нас есть 5 элементов в строке списка: 5 текстовых представлений. После заполнения 5 массивов мы определяем наш адаптер как:
adapter = new ListViewCustomAdapter(Calllogs.this, arr_calllog_name, arr_calllog_phone, arr_calllog_type,arr_calllog_duration, arr_calllog_date);
И вот как мы устанавливаем наш адаптер на просмотр списка:
lv1.setAdapter(adapter);
И, наконец, нам нужно создать наш ListViewCustomAdapter (назовите его как хотите):
public class ListViewCustomAdapter extends BaseAdapter
{
public String title[];
public String description[];
ArrayList<String> arr_calllog_name = new ArrayList<String>();
ArrayList<String> arr_calllog_phone = new ArrayList<String>();
ArrayList<String> arr_calllog_type = new ArrayList<String>();
ArrayList<String> arr_calllog_date = new ArrayList<String>();
ArrayList<String> arr_calllog_duration = new ArrayList<String>();
public Activity context;
public LayoutInflater inflater;
public ListViewCustomAdapter(Activity context, ArrayList<String> arr_calllog_name, ArrayList<String> arr_calllog_phone, ArrayList<String> arr_calllog_type, ArrayList<String> arr_calllog_duration, ArrayList<String> arr_calllog_date) {
super();
this.context = context;
this.arr_calllog_type = arr_calllog_type;
this.arr_calllog_name = arr_calllog_name;
this.arr_calllog_phone = arr_calllog_phone;
this.arr_calllog_date = arr_calllog_date;
this.arr_calllog_duration = arr_calllog_duration;
this.inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return arr_calllog_name.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return null;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
}
public static class ViewHolder
{
TextView txtViewTitle;
TextView txtViewDescription;
TextView txtDate;
TextView txtDuration;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
ViewHolder holder;
if(convertView==null)
{
holder = new ViewHolder();
convertView = inflater.inflate(R.layout.calllog_row, null);
holder.txtViewTitle = (TextView) convertView.findViewById(R.id.calllogquery_name);
holder.txtViewDescription = (TextView) convertView.findViewById(R.id.calllogquery_phone);
holder.txtDate = (TextView) convertView.findViewById(R.id.calllogquery_date);
holder.txtDuration = (TextView) convertView.findViewById(R.id.calllogquery_duration);
convertView.setTag(holder);
}
else
holder=(ViewHolder)convertView.getTag();
int teljes = Integer.parseInt(arr_calllog_duration.get(position));
int h = teljes / 3600;
int mar_h = teljes - h * 3600;
int m = mar_h / 60;
int s = mar_h - m * 60;
String hh, mm, ss;
if (h < 10) { hh = "0" + Integer.toString(h); }
else { hh = Integer.toString(h); }
if (m < 10) { mm = "0" + Integer.toString(m); }
else { mm = Integer.toString(m); }
if (s < 10) { ss = "0" + Integer.toString(s); }
else { ss = Integer.toString(s); }
String dur_edited = hh + ":" + mm + ":" + ss;
holder.txtViewTitle.setText(arr_calllog_name.get(position));
holder.txtViewDescription.setText(arr_calllog_phone.get(position));
holder.txtDate.setText(arr_calllog_date.get(position));
holder.txtDuration.setText(dur_edited);
return convertView;
}
}
Как видите, этот адаптер имеет 5 параметров, как и наши 5 массивов. Это все.
О, и мы также должны сначала определить наш адаптер как ListViewCustomAdapter adapter;
.
Вы можете использовать этот класс адаптера в отдельном классе или в своей деятельности вне метода onCreate ().