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