У меня есть список элементов, которые я хочу отобразить в ListView
, используя пользовательский adapter
, но отображается только один элемент, несмотря на список, если даат содержит больше значений.ListView не отображает все элементы (только первые)
код, который установлен адаптер:
if (app.familyMemebers != null) {
Log.d("family", app.familyMemebers.size() + "");
FamilyMemeberAdapter fad = new FamilyMemeberAdapter(
getApplicationContext(), R.layout.family_row,
app.familyMemebers);
lvFamilyMemebr.setAdapter(fad);
Log.d("count >>>>", fad.getCount() + "");
}
код пользовательского адаптера является:
package com.example.importtoolapp;
import java.util.List;
import android.content.Context;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;
public class FamilyMemeberAdapter extends ArrayAdapter<FamilyMemeber> {
private List<FamilyMemeber> values;
private Context context;
public FamilyMemeberAdapter(Context context, int textViewResourceId,
List<FamilyMemeber> values) {
super(context, textViewResourceId, values);
this.context = context;
this.values = values;
}
@Override
public View getView(int position, View v, ViewGroup parent) {
// Keeps reference to avoid future findViewById()
valuesViewHolder viewHolder;
final FamilyMemeber obj = values.get(position);
if (v == null) {
LayoutInflater li = (LayoutInflater) getContext().getSystemService(
Context.LAYOUT_INFLATER_SERVICE);
v = li.inflate(R.layout.family_row, parent, false);
viewHolder = new valuesViewHolder();
viewHolder.tvID = (TextView) v.findViewById(R.id.tvID);
viewHolder.tvName = (TextView) v.findViewById(R.id.tvName);
viewHolder.tvIndrc = (TextView) v.findViewById(R.id.tvIndrc);
viewHolder.tvIdnumber = (TextView) v.findViewById(R.id.tvIdnumber);
viewHolder.tvRelation = (TextView) v.findViewById(R.id.tvRelation);
viewHolder.tvBDate = (TextView) v.findViewById(R.id.tvBDate);
v.setTag(viewHolder);
} else {
viewHolder = (valuesViewHolder) v.getTag();
}
if (obj != null) {
viewHolder.tvID.setText(obj.familyid);
viewHolder.tvName.setText(obj.fname);
viewHolder.tvIndrc.setText(obj.indrc);
viewHolder.tvIdnumber.setText(obj.idnumber);
viewHolder.tvRelation.setText(obj.hofrelation);
viewHolder.tvBDate.setText(obj.bdate);
}
return v;
}
static class valuesViewHolder {
TextView tvName;
TextView tvID;
TextView tvIndrc;
TextView tvIdnumber;
TextView tvRelation;
TextView tvBDate;
}
}
все выглядит нормально, но почему вы используете textViewResourceId? – santalu
Чтобы передать его суперконструктору – Adham
Можете ли вы предоставить код, в котором вы установили адаптер. И изменяете ли вы свой список значений где-то вне адаптера? – Ayzen