Json RecyclerView上的notifyDataSetChanged

Json RecyclerView上的notifyDataSetChanged,json,android-recyclerview,Json,Android Recyclerview,我有一个回收站和海关。我将对象列表(earthquakeList)传递给recycleradapter,然后执行setAdapter: protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ButterKnife.bind(this); earthquak

我有一个回收站和海关。我将对象列表(earthquakeList)传递给recycleradapter,然后执行setAdapter:

    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    ButterKnife.bind(this);
    earthquakeList = new ArrayList<>();
    adapter = new RecyclerViewAdapter(earthquakeList);
    recyclerView.setAdapter(adapter);
}
在AsyncTask我的类中,我从我的对象中获得一个新列表,该列表是从internet获得的,当我用旧列表替换这个新列表并调用notifyDataSetChanged时,RecycleView仍然没有显示?? 我调试我的应用程序,从网络上获取对象。 我在列表视图中是这样做的,但recylerview似乎过时了

我将旧列表替换为新列表,如下所示:

  private class EarthQuakeAsyncTask extends AsyncTask<Void, Void,  List<Earthquake>> {
    @Override
    protected List<Earthquake> doInBackground(Void... urls) {

        // Create URL object
        URL url = HttpRequest.createUrl(USGS_REQUEST_URL);

        //  perform HTTP request to the URL and receive a JSON response back
        String jsonResponse = "";
        try {
            jsonResponse = HttpRequest.makeHttpRequest(url);
        } catch (IOException e) {
            e.printStackTrace();
        }
        List<Earthquake> earthquakes = HttpRequest.extractFeaturesFromJson(jsonResponse);
        return earthquakes;
    }

    @Override
    protected void onPostExecute(List<Earthquake> earthquakeList) {
        super.onPostExecute(earthquakeList);
        MainActivity.this.earthquakeList.clear();
        MainActivity.this.earthquakeList.addAll(earthquakeList);
        adapter.notifyDataSetChanged();

    }
私有类EarthQuakeAsyncTask扩展了AsyncTask{
@凌驾
受保护列表doInBackground(无效…URL){
//创建URL对象
URL URL=HttpRequest.createUrl(USGS\u请求\u URL);
//对URL执行HTTP请求并接收返回的JSON响应
字符串jsonResponse=“”;
试一试{
jsonResponse=HttpRequest.makeHttpRequest(url);
}捕获(IOE异常){
e、 printStackTrace();
}
列表地震=HttpRequest.extractFeaturesFromJson(jsonResponse);
返回地震;
}
@凌驾
受保护的void onPostExecute(列出地震列表){
super.onPostExecute(地震专家);
main activity.this.earthquakeList.clear();
MainActivity.this.earthquakeList.addAll(地震列表);
adapter.notifyDataSetChanged();
}
我到底怎么了

************************编辑******************** 这是适配器:

public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.MyHolder> {

List<Earthquake> earthquakes;


public RecyclerViewAdapter(List<Earthquake> earthquakes) {
    this.earthquakes = earthquakes;
}


@Override
public MyHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View view = LayoutInflater.from(parent.getContext()).inflate(
            R.layout.earthquak_list_item, parent, false);
    MyHolder myHolder = new MyHolder(view);
    return myHolder;
}

@Override
public void onBindViewHolder(MyHolder holder, int position) {

    Earthquake earthquake = earthquakes.get(position);
    holder.magnitude.setText(earthquake.getmMagnitude());
    holder.location.setText(earthquake.getmLocation());
    holder.time.setText(earthquake.getmDate());

}

@Override
public int getItemCount() {
    return (null != earthquakes ? earthquakes.size() : 0);
}

public void setItems(List<Earthquake> earthquakeList) {
    this.earthquakes = earthquakeList;

}


public class MyHolder extends RecyclerView.ViewHolder {

    @BindView(R.id.magnitude)
    TextView magnitude;

    @BindView(R.id.location)
    TextView location;

    @BindView(R.id.date)
    TextView time;

    public MyHolder(View itemView) {
        super(itemView);
        ButterKnife.bind(this, itemView);
    }
}
公共类RecycleServiceAdapter扩展了RecyclerView.Adapter{
列出地震;
公共回收服务适配器(列出地震){
地震=地震;
}
@凌驾
public MyHolder onCreateViewHolder(视图组父级,int-viewType){
View=LayoutInflater.from(parent.getContext()).flate(
R.layout.earthquak\u列表项目,父项,假);
MyHolder MyHolder=新的MyHolder(视图);
归还我的持有人;
}
@凌驾
公共无效onBindViewHolder(MyHolder,int位置){
地震=地震。获取(位置);
holder.震级.setText(地震.getmMagnitude());
holder.location.setText(地震.getmLocation());
holder.time.setText(地震.getmDate());
}
@凌驾
public int getItemCount(){
返回(null!=地震?地震。大小():0);
}
公共无效设置项(列出地震列表){
地震=地震学家;
}
公共类MyHolder扩展了RecyclerView.ViewHolder{
@BindView(R.id.震级)
文本视图大小;
@BindView(R.id.location)
文本视图位置;
@BindView(R.id.date)
文本查看时间;
公共MyHolder(查看项目视图){
超级(项目视图);
ButterKnife.bind(这个,itemView);
}
}

操作,我忘了为recyclerView设置布局管理器

这是正确的代码:

    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    ButterKnife.bind(this);
    earthquakeList = new ArrayList<>();
    layoutManager = new LinearLayoutManager(this);
    recyclerView.setLayoutManager(layoutManager);
    adapter = new RecyclerViewAdapter(earthquakeList);
    recyclerView.setAdapter(adapter);

}
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
把(这个)绑起来;
地震列表=新的ArrayList();
layoutManager=新的LinearLayoutManager(此);
recyclerView.setLayoutManager(layoutManager);
适配器=新的回收设备适配器(地震列表);
recyclerView.setAdapter(适配器);
}
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    ButterKnife.bind(this);
    earthquakeList = new ArrayList<>();
    layoutManager = new LinearLayoutManager(this);
    recyclerView.setLayoutManager(layoutManager);
    adapter = new RecyclerViewAdapter(earthquakeList);
    recyclerView.setAdapter(adapter);

}