在片段中看不到listview

时间:2014-08-22 05:58:24

标签: android listview android-fragments

我目前正在修改一个Android应用程序,我需要将listview添加到现有片段。由于我是Android新手,我只是模仿应用程序中的代码。我创建了一个新的arrayadapter,一个新的数据类,并对现有的片段类进行了一些修改。问题是我无法在应用程序中看到我的列表。以下是我的代码。

适配器

public class RecordArrayAdapter extends ArrayAdapter<CheckInRecord.CheckInRec> {
private int resourceId;
private Context context;
private List<CheckInRecord.CheckInRec> checkInRec;

public RecordArrayAdapter(Context context, int resourceId, List<CheckInRecord.CheckInRec> checkInRec)
{
    super(context, resourceId, checkInRec);
    this.resourceId = resourceId;
    this.context = context;
    this.checkInRec = checkInRec;
}

public View getView(int position, View convertView, ViewGroup parent)
{
    if (convertView == null){
        LayoutInflater inflater = ((Activity)context).getLayoutInflater();
        convertView = inflater.inflate(resourceId, parent, false);
    }

    TextView textViewName = (TextView) convertView.findViewById(R.id.tv_name);
    TextView textViewCheckInDate = (TextView) convertView.findViewById(R.id.tv_checkindate);
    TextView textViewPoints = (TextView) convertView.findViewById(R.id.tv_points);
    ImageView imageViewIcon = (ImageView) convertView.findViewById(R.id.iv_icon);

    CheckInRecord.CheckInRec checkInrec = checkInRec.get(position);
    textViewName.setText(checkInrec.providerName);
    textViewCheckInDate.setText(checkInrec.checkInDate);
    textViewPoints.setText(checkInrec.providerPoints);
    ImageLoader.getInstance().displayImage(checkInrec.providerIcon, imageViewIcon, Utility.displayImageOptions);

    return convertView;
}

public int getIsPrize(int position) {return (this.checkInRec.get(position).isPrize);}

}

数据类型

public class CheckInRecord {
public int userPoints;
public String userName;
public String gender;
public String birthDate;
public String location;
public String userIcon;

public List<CheckInRec> checkInRecList = new ArrayList<CheckInRec>();


public void addCheckInRec(String providerName, String providerLocation, String providerIcon,
                          String checkInDate, int providerPoints, int isPrize){
    CheckInRec checkInRec = new CheckInRec();
    checkInRec.providerName = providerName;
    checkInRec.providerLocation = providerLocation;
    checkInRec.providerIcon = providerIcon;
    checkInRec.checkInDate = checkInDate;
    checkInRec.providerPoints = providerPoints;
    checkInRec.isPrize = isPrize;
    checkInRecList.add(checkInRec);
}

public List<String> recImages(){
    List<String> resultList = new ArrayList<String>();
    if (this.checkInRecList == null){
        return resultList;
    }
    for (CheckInRec rec : this.checkInRecList){
        resultList.add(rec.providerIcon);
    }
    return resultList;
}

public class CheckInRec{
    public String providerName;
    public String providerLocation;
    public String providerIcon;
    public String checkInDate;
    public int providerPoints;
    public int isPrize;
}

}

片段

    public class MeFragment extends Fragment implements ApiRequestDelegate {


    private TextView textViewName;
    private TextView textViewPoints;
    private ProgressDialog progressDialog;

    private RecordArrayAdapter recordArrayAdapter;
    private List<CheckInRecord.CheckInRec> checkInRec = new ArrayList<CheckInRecord.CheckInRec>();


    public MeFragment() {

    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        AppDataManager.getInstance().setAllowCheckIn(true);

        progressDialog = ProgressDialog.show(getActivity(), "", "");

        ApiManager.getInstance().checkInHistories(AppDataManager.getInstance().getUserToken(), AppDataManager.getInstance().getUserPhone(),
                Utility.getPictureSize(), this);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

        View view =  inflater.inflate(R.layout.fragment_me, container, false);

        textViewName = (TextView) view.findViewById(R.id.tv_name);
        textViewPoints = (TextView) view.findViewById(R.id.tv_points);

        ListView listViewCheckInRec = (ListView) view.findViewById(R.id.lv_histories);
        recordArrayAdapter = new RecordArrayAdapter(this.getActivity().getApplicationContext(), R.layout.row_record, checkInRec);
        listViewCheckInRec.setAdapter(recordArrayAdapter);

        return view;
    }

    @Override
    public void setMenuVisibility(boolean menuVisible) {
        super.setMenuVisibility(menuVisible);
        if (menuVisible) {
            refreshName();
        }
    }

    public void refreshName() {

            progressDialog = ProgressDialog.show(getActivity(), "", "");
            AppDataManager dataManager = AppDataManager.getInstance();
           ApiManager.getInstance().checkInHistories(dataManager.getUserToken(), dataManager.getUserPhone(), Utility.getPictureSize(), this);

    }

    @Override
    public void apiCompleted(ApiResult apiResult, HttpRequest httpRequest) {
        if (progressDialog!=null){
            progressDialog.dismiss();
        }

        if (!apiResult.success){
            ApiManager.handleMessageForReason(apiResult.failReason, getActivity());
            return;
        }

        CheckInRecord checkInRecord = (CheckInRecord) apiResult.valueObject;
        if (checkInRecord != null){
            textViewName.setText(checkInRecord.userName);
            textViewPoints.setText(String.format("积分%d分", checkInRecord.userPoints));
//            this.checkInRec.clear();
//            this.checkInRec.addAll(checkInRecord.checkInRecList);
//
//            recordArrayAdapter.notifyDataSetChanged();
        }
    }
}

1 个答案:

答案 0 :(得分:0)

The problem is I cannot see my list in the app.

这是因为checkInRec现在内部有任何元素。

我真的可以说它是空的,因为你评论了这个:

//            this.checkInRec.clear(); //clear the old data from the list
//            this.checkInRec.addAll(checkInRecord.checkInRecList); //add all the data inside the checkInRecord.checkInRecList
//
//            recordArrayAdapter.notifyDataSetChanged(); //refreshing the ListView to display the new data

现在做的是清除旧列表数组并添加checkInRecord.checkInRecList的新数据集并刷新ListView以便实现这些新数据/显示在ListView