在android中替换数据

在android中替换数据,android,gridview,Android,Gridview,我正在开发android应用程序,我想在用户点击搜索按钮时,用另一个从互联网上的JSON文件获取的数据来更改android GridView数据内容 我尝试了许多类似place函数的方法,在dataAdapter或Activity类中获取数据,但仍然没有在未关闭Activity并再次运行它的情况下放置新数据 代码如下: MainActivity.java public class MainActivity extends AppCompatActivity { private RecyclerV

我正在开发android应用程序,我想在用户点击搜索按钮时,用另一个从互联网上的JSON文件获取的数据来更改android GridView数据内容

我尝试了许多类似place函数的方法,在dataAdapter或Activity类中获取数据,但仍然没有在未关闭Activity并再次运行它的情况下放置新数据

代码如下:

MainActivity.java

public class MainActivity extends AppCompatActivity {
private RecyclerView recyclerView;
private GridLayoutManager gridLayoutManager;
private CustomAdapter adapter;
private List<MyData> data_list;
String URL,search_name_URL,movie_name;
LayoutInflater inflater;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    recyclerView = (RecyclerView) findViewById(R.id.recycler_view);
    data_list  = new ArrayList<>();
    load_data_from_server(0);
    //URL= getResources().getString(R.string.sub_url);
    URL="example.com/getmovies.php?id=";

    gridLayoutManager = new GridLayoutManager(this,3);
    recyclerView.setLayoutManager(gridLayoutManager);

    adapter = new CustomAdapter(this,data_list);
    recyclerView.setAdapter(adapter);

    recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
        @Override
        public void onScrolled(RecyclerView recyclerView, int dx, int dy) {

            if(gridLayoutManager.findLastCompletelyVisibleItemPosition() == data_list.size()-1){
                load_data_from_server(data_list.get(data_list.size()-1).getId());
            }

        }
    });

}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.m, menu);

    MenuItem searchItem = menu.findItem(R.id.action_search);
    final SearchView searchView =
            (SearchView) MenuItemCompat.getActionView(searchItem);
    searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
        @Override
        public boolean onQueryTextSubmit(String query) {
            search_name_URL="example.com/getmoviebyname.php?name="+searchView.getQuery().toString();
            load_data_by_name();
            Toast.makeText(MainActivity.this, ""+searchView.getQuery().toString(), Toast.LENGTH_SHORT).show();
            inflater = (LayoutInflater)MainActivity.this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            View inflatedView = inflater.inflate(R.layout.card, null);
            recyclerView.setLayoutManager(gridLayoutManager);
            recyclerView.addView(inflatedView);

            return false;
        }

        @Override
        public boolean onQueryTextChange(String newText) {

            return false;
        }
    });

    return super.onCreateOptionsMenu(menu);
}


private void load_data_from_server(int id) {
        data_list.clear();
        AsyncTask<Integer,Void,Void> task = new AsyncTask<Integer, Void, Void>() {
            @Override
            protected Void doInBackground(Integer... integers) {

                OkHttpClient client = new OkHttpClient();
                Request request = new Request.Builder()
                        .url(URL+integers[0])
                        .build();
                try {
                    Response response = client.newCall(request).execute();

                    JSONArray array = new JSONArray(response.body().string());

                    for (int i=0; i<array.length(); i++){

                        JSONObject object = array.getJSONObject(i);

                        MyData data = new MyData(object.getInt("id"),object.getString("Movie_Name"),
                                object.getString("Movie_Description"),object.getString("Movie_Picture"),
                                object.getString("Movie_Cover"),object.getString("Movie_Rate"),object.getString("Movie_Year"),
                            object.getString("Movie_Language"),object.getString("Movie_Quality"),
                                object.getString("Movie_Trailer"));

                        data_list.add(data);
                    }



                } catch (IOException e) {
                    e.printStackTrace();
                } catch (JSONException e) {
                    System.out.println("End of content");
                }
                return null;
            }

            @Override
            protected void onPostExecute(Void aVoid) {
                adapter.notifyDataSetChanged();
            }
        };

    task.execute(id);
}

private void load_data_by_name() {

    AsyncTask<Integer,Void,Void> task = new AsyncTask<Integer, Void, Void>() {
        @Override
        protected Void doInBackground(Integer... integers) {

            OkHttpClient client = new OkHttpClient();
            Request request = new Request.Builder()
                    .url(search_name_URL+movie_name)
                    .build();
            try {
                Response response = client.newCall(request).execute();

                JSONArray array = new JSONArray(response.body().string());

                for (int i=0; i<array.length(); i++){

                    JSONObject object = array.getJSONObject(i);

                    MyData data = new MyData(object.getInt("id"),object.getString("Movie_Name"),
                                object.getString("Movie_Description"),object.getString("Movie_Picture"),
                                object.getString("Movie_Cover"),object.getString("Movie_Rate"),object.getString("Movie_Year"),
                            object.getString("Movie_Language"),object.getString("Movie_Quality"),
                                object.getString("Movie_Trailer"));

                    data_list.add(data);
                }



            } catch (IOException e) {
                e.printStackTrace();
            } catch (JSONException e) {
                System.out.println("End of content");
            }
            return null;
        }

        @Override
        protected void onPostExecute(Void aVoid) {
            adapter.notifyDataSetChanged();
        }
    };

    task.execute();
}
public class CustomAdapter extends RecyclerView.Adapter<CustomAdapter.ViewHolder> {

private Context context;

private List<MyData> my_data;

public CustomAdapter(Context context, List<MyData> my_data) {
    this.context = context;
    this.my_data = my_data;
}

@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

    View itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.card, parent, false);

    return new ViewHolder(itemView);
}

@Override
public void onBindViewHolder(ViewHolder holder, final int position) {
    if ((my_data.get(position).getMovie_Name().length())>16) {
        holder.title.setText((my_data.get(position).getMovie_Name().substring(0, Math.min(my_data.get(position).getMovie_Name().length(), 13))) + "..");
    }else{
        holder.title.setText((my_data.get(position).getMovie_Name()));

    }

    holder.click.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent intent = new Intent(context, item.class);
            intent.putExtra("Title",(my_data.get(position).getMovie_Name()));
            intent.putExtra("Vrate",(my_data.get(position).getMovie_Rate()));
            intent.putExtra("cRate",(my_data.get(position).getMovie_Censorship()));
            intent.putExtra("t_ime",(my_data.get(position).getMovie_Length()));
            intent.putExtra("Relase",(my_data.get(position).getMovie_Year()));
            intent.putExtra("FinalGenre",(my_data.get(position).getMovie_Genre()));
            intent.putExtra("imageURL",(my_data.get(position).getMovie_Picture()));
            intent.putExtra("coverimageURL",(my_data.get(position).getMovie_Cover()));
            context.startActivity(intent);
        }
    });
    holder.genre.setText((my_data.get(position).getMovie_Genre()));

    Glide.with(context).load(my_data.get(position).getMovie_Cover()).into(holder.coverthumbnail);

}

@Override
public int getItemCount() {
    return my_data.size();
}

public class ViewHolder extends RecyclerView.ViewHolder {

    public TextView title,genre;
    public ImageView coverthumbnail;
    LinearLayout click;

    public ViewHolder(View itemView) {
        super(itemView);
        click = (LinearLayout) itemView.findViewById(R.id.click);
        title = (TextView) itemView.findViewById(R.id.title);
        genre = (TextView) itemView.findViewById(R.id.genre);
        coverthumbnail = (ImageView) itemView.findViewById(R.id.image);

    }




    //cardView.OnClickListener()
}
public class MyData {
private int id;
private String Movie_Name, Movie_Description, Movie_Picture, Movie_Cover, Movie_Rate, Movie_Year, Movie_Language, Movie_Quality, Movie_Trailer, Movie_Download, Movie_Censorship, Movie_Genre, Movie_Length, Movie_URL1, Movie_URL2, Movie_URL3, Movie_URL4, Movie_URL5;


public MyData(int id, String movie_Name, String movie_Description, String movie_Picture, String movie_Cover, String movie_Rate, String movie_Year, String movie_Language, String movie_Quality, String movie_Trailer, String movie_Download, String movie_Censorship, String movie_Genre, String movie_Length, String movie_URL1, String movie_URL2, String movie_URL3, String movie_URL4, String movie_URL5) {
    this.id = id;
    Movie_Name = movie_Name;
    Movie_Description = movie_Description;
    Movie_Picture = movie_Picture;
    Movie_Cover = movie_Cover;
    Movie_Rate = movie_Rate;
    Movie_Year = movie_Year;
    Movie_Language = movie_Language;
    Movie_Quality = movie_Quality;
    Movie_Trailer = movie_Trailer;
    Movie_Censorship = movie_Censorship;
    Movie_Genre = movie_Genre;
    Movie_Length = movie_Length;
}

public int getId() {
    return id;
}

public void setId(int id) {
    this.id = id;
}

public String getMovie_Name() {
    return Movie_Name;
}

public void setMovie_Name(String movie_Name) {
    Movie_Name = movie_Name;
}

public String getMovie_Description() {
    return Movie_Description;
}

public void setMovie_Description(String movie_Description) {
    Movie_Description = movie_Description;
}

public String getMovie_Picture() {
    return Movie_Picture;
}

public void setMovie_Picture(String movie_Picture) {
    Movie_Picture = movie_Picture;
}

public String getMovie_Cover() {
    return Movie_Cover;
}

public void setMovie_Cover(String movie_Cover) {
    Movie_Cover = movie_Cover;
}

public String getMovie_Rate() {
    return Movie_Rate;
}

public void setMovie_Rate(String movie_Rate) {
    Movie_Rate = movie_Rate;
}

public String getMovie_Year() {
    return Movie_Year;
}

public void setMovie_Year(String movie_Year) {
    Movie_Year = movie_Year;
}

public String getMovie_Language() {
    return Movie_Language;
}

public void setMovie_Language(String movie_Language) {
    Movie_Language = movie_Language;
}

public String getMovie_Quality() {
    return Movie_Quality;
}

public void setMovie_Quality(String movie_Quality) {
    Movie_Quality = movie_Quality;
}

public String getMovie_Trailer() {
    return Movie_Trailer;
}

public void setMovie_Trailer(String movie_Trailer) {
    Movie_Trailer = movie_Trailer;
}
public String getMovie_Censorship() {
    return Movie_Censorship;
}

public void setMovie_Censorship(String movie_Censorship) {
    Movie_Censorship = movie_Censorship;
}

public String getMovie_Genre() {
    return Movie_Genre;
}

public void setMovie_Genre(String movie_Genre) {
    Movie_Genre = movie_Genre;
}

public String getMovie_Length() {
    return Movie_Length;
}

public void setMovie_Length(String movie_Length) {
    Movie_Length = movie_Length;
}

}

adapter.notifyDataChanged();请添加您的代码以便我们可以找到您..我添加了@Upendra