Android notifyDataSetChanged()未从listview中删除列表项

Android notifyDataSetChanged()未从listview中删除列表项,android,listview,android-listview,Android,Listview,Android Listview,我正在尝试从Listview中删除一个列表项,该列表项是使用CustomAdapter作为单击的按钮填充的。我的自定义适配器的getView()方法如下所示: public View getView(final int position, View convertView, ViewGroup parent) { final NonFollowersHolder holder; if(convertView == null){ LayoutInflater inf

我正在尝试从
Listview
中删除一个列表项,该列表项是使用CustomAdapter作为单击的按钮填充的。我的自定义适配器的
getView()
方法如下所示:

public View getView(final int position, View convertView, ViewGroup parent) {
    final NonFollowersHolder holder;
    if(convertView == null){
        LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        convertView = inflater.inflate(R.layout.listitem_nonfollowers, parent, false);

        holder = new NonFollowersHolder();
        holder.tv_fullname = (TextView)convertView.findViewById(R.id.tv_fullname);
        holder.tv_username = (TextView)convertView.findViewById(R.id.tv_username);
        holder.tv_bio = (TextView)convertView.findViewById(R.id.tv_bio);
        holder.userpic = (NetworkImageView)convertView.findViewById(R.id.iv_userpic);
        holder.action = (ImageView)convertView.findViewById(R.id.action);

        convertView.setTag(holder);
    }
    else{
        holder = (NonFollowersHolder)convertView.getTag();
    }
    holder.tv_fullname.setText(list.get(position).fullname);
    holder.tv_username.setText(list.get(position).username);
    String temp = list.get(position).bio;
    holder.tv_bio.setText(temp);
    holder.userpic.setImageUrl(list.get(position).profilepic, loader);

    if(isUnfollow == true) holder.action.setImageDrawable(context.getResources().getDrawable(R.drawable.bt_unfollow));
    else holder.action.setImageDrawable(context.getResources().getDrawable(R.drawable.bt_follow));

    holder.action.setOnClickListener(new MyListener(position));
    return convertView;
}
clickListener类
MyListener
是:

private class MyListener implements View.OnClickListener {

    private int position;
    public MyListener(int position) {
        this.position = position;
    }

    @Override
    public void onClick(View v) {
        String url = AppProperties.APIURL+"/users/"+list.get(position).id
                +"/relationship?access_token="+session.getValue(AppProperties.ACCESS_TOKEN);
        if(isUnfollow){

            RequestParams params = new RequestParams();
            params.put("action", "unfollow");
            InstagramRestClient.post(url, params, new JsonHttpResponseHandler(){

                @Override
                public void onSuccess(int statusCode, Header[] headers, JSONArray response) {
                    System.out.println(response.toString());
                    list.remove(position);
                    notifyDataSetChanged();
                }

                @Override
                public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) {
                    System.out.println(responseString);
                }
            });
        }
        else{
            RequestParams params = new RequestParams();
            params.put("action", "follow");
            InstagramRestClient.post(url, params, new JsonHttpResponseHandler(){

                @Override
                public void onSuccess(int statusCode, Header[] headers, JSONArray response) {
                    System.out.println(response.toString());
                    list.remove(position);
                    notifyDataSetChanged();
                }

                @Override
                public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) {
                    System.out.println(responseString);
                }
            });
        }
    }
}
但是
notifyDataSetChanged()
没有刷新列表,也没有删除该项

更新

整个适配器类

public class NonFollowersAdapter extends BaseAdapter {

private List<UserInfo> list;
private Context context;
private ImageLoader loader;
private boolean isUnfollow;
private Session session;

public NonFollowersAdapter(List<UserInfo> list, Context context, boolean isUnfollow){
    this.list = list;
    this.context = context;
    session = new Session(context);
    this.isUnfollow = isUnfollow;
    loader = AppController.getInstance().getImageLoader();
}
@Override
public int getCount() {
    return list.size();
}

@Override
public Object getItem(int position) {
    return list.get(position);
}

@Override
public long getItemId(int position) {
    return position;
}

@Override
public View getView(final int position, View convertView, ViewGroup parent) {
    final NonFollowersHolder holder;
    if(convertView == null){
        LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        convertView = inflater.inflate(R.layout.listitem_nonfollowers, parent, false);

        holder = new NonFollowersHolder();
        holder.tv_fullname = (TextView)convertView.findViewById(R.id.tv_fullname);
        holder.tv_username = (TextView)convertView.findViewById(R.id.tv_username);
        holder.tv_bio = (TextView)convertView.findViewById(R.id.tv_bio);
        holder.userpic = (NetworkImageView)convertView.findViewById(R.id.iv_userpic);
        holder.action = (ImageView)convertView.findViewById(R.id.action);

        convertView.setTag(holder);
    }
    else{
        holder = (NonFollowersHolder)convertView.getTag();
    }
    holder.tv_fullname.setText(list.get(position).fullname);
    holder.tv_username.setText(list.get(position).username);
    String temp = list.get(position).bio;
    holder.tv_bio.setText(temp);
    holder.userpic.setImageUrl(list.get(position).profilepic, loader);

    if(isUnfollow == true) holder.action.setImageDrawable(context.getResources().getDrawable(R.drawable.bt_unfollow));
    else holder.action.setImageDrawable(context.getResources().getDrawable(R.drawable.bt_follow));

    holder.action.setOnClickListener(new MyListener(position));
    return convertView;
}


static class NonFollowersHolder{
TextView tv_fullname, tv_username, tv_bio;
NetworkImageView userpic;
    ImageView action;

}这个错误很愚蠢。
notifyDataSetChanged()
方法没有任何问题。我正在重写onSuccess(int statusCode,Header[]headers,JSONArray response)方法,但是我从服务器得到的响应是一个JSONObject。 因此,该方法从未被执行,因此该项没有被删除


将方法更改为
onSuccess(int statusCode,Header[]headers,JSONObject response)
,一切正常。

MyListener
CustomAdapter
类的内部类?是。它是内部类。请发布所有适配器类code@AkashSingh:但我确定列表中的最后一项正在删除?@ρ∑ρѕρєK是的,ArrayList中的项正在删除。
private class MyListener implements View.OnClickListener {

    private int position;
    public MyListener(int position) {
        this.position = position;
    }

    @Override
    public void onClick(View v) {
        String url = AppProperties.APIURL+"/users/"+list.get(position).id
                +"/relationship?access_token="+session.getValue(AppProperties.ACCESS_TOKEN);
        if(isUnfollow){

            RequestParams params = new RequestParams();
            params.put("action", "unfollow");
            InstagramRestClient.post(url, params, new JsonHttpResponseHandler(){

                @Override
                public void onSuccess(int statusCode, Header[] headers, JSONArray response) {
                    System.out.println(response.toString());
                    list.remove(position);
                    notifyDataSetChanged();
                }

                @Override
                public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) {
                    System.out.println(responseString);
                }
            });
        }
        else{
            RequestParams params = new RequestParams();
            params.put("action", "follow");
            InstagramRestClient.post(url, params, new JsonHttpResponseHandler(){

                @Override
                public void onSuccess(int statusCode, Header[] headers, JSONArray response) {
                    System.out.println(response.toString());
                    list.remove(position);
                    notifyDataSetChanged();
                }

                @Override
                public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) {
                    System.out.println(responseString);
                }
            });
        }
    }
}