【问题标题】:Android: Customized adapter doesn't call getView methodAndroid:自定义适配器不调用 getView 方法
【发布时间】:2015-12-09 10:23:47
【问题描述】:

我是 Android 新手,我检查了 getCount() 方法返回的值是否大于 0,但 getView()getItem() 方法都没有被执行。

这是我的适配器类

package com.zmlogisncs.fragment;

import java.util.List;

import com.zmlogisncs.dreamove.R;
import com.zmlogisncs.vo.AppointMent;

import android.content.Context;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;

public class AppointAdapter extends BaseAdapter {
private Context mContext;
private List<AppointMent> mList;

public AppointAdapter(Context context,List<AppointMent> list){
    mContext=context;
    mList=list;
}

@Override
public int getCount() {
    Log.d("ssss",mList.size()+"");
    return mList.size();
}

@Override
public Object getItem(int arg0) {
    return mList.get(arg0);
}

@Override
public long getItemId(int arg0) {
    return arg0;
}
@Override
public View getView(int poistion, View converView, ViewGroup parent) {
    if (converView==null) {
    converView=LayoutInflater.from(mContext).inflate(R.layout.appoitmentlistview_item, null);
    }
    Log.d("ssss", "ssss");
    return converView;
}

}

这是我的片段类

public class AppoitmentPeople extends  ListFragment  {
    private View view;
    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         getAppoitment(getActivity());
    }
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        view = inflater.inflate(R.layout.appoitment_people, container, false);
        return view;
    }
public void  getAppoitment(Context mContext){
    AsyncHttpClient client = new AsyncHttpClient();
    RequestParams params = new RequestParams();
    params.put("access_token", URLManager.ACCESS_TOKEN);
    params.put("start_page", 0+"");
    params.put("type", "2");
    client.post(URLManager.GET_SELLERLIST, params,
            new AsyncHttpResponseHandler() {
                @Override
                public void onSuccess(String content) {
                    try {
                    Response<List<AppointMent>> result=JsonUtil.deserialize(content, new TypeReference<Response<List<AppointMent>>>() {
                    });
                    List<AppointMent> list=result.getData();
                    AppointAdapter  adapter=new AppointAdapter(getActivity(),list);
                    setListAdapter(adapter);
                    } catch (Exception e) {
                        Log.e("AppPeople", e.getMessage());
                    }
                }

            });

}

}

【问题讨论】:

  • 您是否遇到任何错误?并尝试 [this.setListAdapter(adapter);]
  • 你确定 getCount 被调用了吗?
  • 您的适配器构造函数是 Context 和 List 但您使用 getActivity(); 调用它而是使用 getApplicationContext();
  • @ShvetChakra 抱歉,找不到 getApplicationContext() 方法
  • @Nanoc 是的,大小返回3

标签: java android adapter


【解决方案1】:
@Override
public long getItemId(int arg0) {
    return arg0;
}

把上面的改成

@Override
public long getItemId(int arg0) {
    return mList.indexOf(arg0);
}

【讨论】:

  • 还在使用 Eclipse,嗯? :P
  • @Manojkumar 抱歉,它不起作用,但 Eclipse 运行良好
猜你喜欢
  • 2013-04-26
相关资源
最近更新 更多