RecyclerViev смена построения списка внутри Activity
У меня есть RecyclerView с загрузкой списка фильмов. По стандарту он идет елементами списка в котором Ссылка на постер, название, оценка, год, выпуска и краткое описание. С помощью NavigationDrawer который я засунул в Main activity я смог изменить растановку елементов списка с LinearLayoutManager на GridLayoutManager и на оборот. Но проблема в том что при смене Списка на Таблицу остается описание и прочая не нужная информация.
Внимание вопрос как в Activity менять макет елемента списка?
Вот код Main
public class Main extends AppCompatActivity{
private static String JSON_URL = "https://api.themoviedb.org/3/movie/";
private static String API = "?api_key=d58a97366ae95fdab0a70cdc8ed8db5f";
private static String TOP = JSON_URL+"top_rated"+API;
private static String POPULAR = JSON_URL+"popular"+API;
private static String UNCOMING = JSON_URL="upcoming"+API;
private static String GENRE = JSON_URL+"/genre/movie/list"+API;
Context c;
List<MovieModelClass> movieList;
RecyclerView rv;
RVAdapter adapter;
HtmlTextView info;
/*ImageView image;
LinearLayout tab, short_name;*/
private Toolbar toolbar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
c=getApplicationContext();
toolbar = findViewById(R.id.toolbar);
/* info = findViewById(R.id.info);
tab = findViewById(R.id.tab);
short_name = findViewById(R.id.short_name);
image = findViewById(R.id.image);*/
movieList = new ArrayList<>();
rv = findViewById(R.id.rv);
GetData getData = new GetData();
getData.execute();
setSupportActionBar(toolbar);
getDrawer(this, toolbar);
}
public class GetData extends AsyncTask<String, String, String>{
@Override
protected String doInBackground(String... strings) {
String current = "";
try {
URL url;
HttpURLConnection urlConnection = null;
try {
url = new URL(POPULAR);
urlConnection = (HttpURLConnection) url.openConnection();
InputStream inputStream = urlConnection.getInputStream();
InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
int data = inputStreamReader.read();
while (data != -1){
current+=(char)data;
data = inputStreamReader.read();
}
return current;
}catch (MalformedURLException e){
e.printStackTrace();
}catch (IOException e){
e.printStackTrace();
}finally {
if(urlConnection!=null){
urlConnection.disconnect();
}
}
}catch (Exception e){
e.printStackTrace();
}
return current;
}
@Override
protected void onPostExecute(String s){
try {
JSONObject jsonObject = new JSONObject(s);
JSONArray jsonArray = jsonObject.getJSONArray("results");
for(int i = 0; i<jsonArray.length(); i++){
JSONObject jsonObject1 = jsonArray.getJSONObject(i);
MovieModelClass model = new MovieModelClass();
model.setName(jsonObject1.getString("title"));
model.setRelease(jsonObject1.getString("release_date"));
model.setImage(jsonObject1.getString("poster_path"));
model.setStars(jsonObject1.getString("vote_average"));
model.setInfo(jsonObject1.getString("overview"));
movieList.add(model);
}
}catch (JSONException e){
e.printStackTrace();
}
PutDataIntoRecyclerView(movieList);
}
}
private void PutDataIntoRecyclerView(List<MovieModelClass> movieList){
adapter = new RVAdapter(this, movieList);
rv.setLayoutManager(new LinearLayoutManager(this));
rv.setAdapter(adapter);
}
public void getDrawer(final Activity activity, Toolbar toolbar) {
PrimaryDrawerItem drawerHeader = new PrimaryDrawerItem().withIdentifier(1)
.withName("Профіль").withIcon(R.drawable.account);
SecondaryDrawerItem drawerReg = new SecondaryDrawerItem().withIdentifier(3)
.withName("Вийти").withIcon(R.drawable.exit).withSelectable(false);
SecondaryDrawerItem drawerString = new SecondaryDrawerItem().withIdentifier(4)
.withName("Список").withIcon(R.drawable.list).withSelectable(false);
SecondaryDrawerItem drawerTab = new SecondaryDrawerItem().withIdentifier(5)
.withName("Таблиця").withIcon(R.drawable.grid).withSelectable(false);
final IProfile profile = new ProfileDrawerItem().withIcon(R.drawable.gradient);
AccountHeader header = new AccountHeaderBuilder()
.withActivity(activity)
.withTranslucentStatusBar(true)
.withHeaderBackground(R.drawable.gradient)
.withOnAccountHeaderProfileImageListener(new AccountHeader.OnAccountHeaderProfileImageListener() {
@Override
public boolean onProfileImageClick(View view, IProfile profile, boolean current) {
return false;
}
@Override
public boolean onProfileImageLongClick(View view, IProfile profile, boolean current) {
return false;
}
})
.addProfiles(profile)
.build();
Drawer result = new DrawerBuilder()
.withActivity(activity)
.withToolbar(toolbar)
.withActionBarDrawerToggle(true)
.withActionBarDrawerToggleAnimated(true)
.withCloseOnClick(true)
.withSelectedItem(-1)
.withAccountHeader(header)
.addDrawerItems(
drawerHeader,
new DividerDrawerItem(),
drawerReg,
new DividerDrawerItem(),
drawerString,
drawerTab
)
.withOnDrawerItemClickListener(new Drawer.OnDrawerItemClickListener() {
@Override
public boolean onItemClick(View view, int position, IDrawerItem drawerItem) {
info = view.findViewById(R.id.info);
if (drawerItem.getIdentifier() == 1) {
Intent i = new Intent(activity, Sign_In.class);
activity.startActivity(i);
}else if (drawerItem.getIdentifier() == 3) {
Intent i = new Intent(activity, Sign_Up.class);
activity.startActivity(i);
}else if(drawerItem.getIdentifier() == 4){
rv.setLayoutManager(new LinearLayoutManager(activity));
rv.setAdapter(adapter);
Toast.makeText(activity.getApplicationContext(), "Список", Toast.LENGTH_SHORT).show();
}else if(drawerItem.getIdentifier() == 5){
info.setVisibility(View.INVISIBLE);
rv.setLayoutManager(new GridLayoutManager(activity, 3, GridLayoutManager.VERTICAL, false));
rv.setAdapter(adapter);
Toast.makeText(activity.getApplicationContext(), "Таблиця", Toast.LENGTH_SHORT).show();
}
return true;
}
})
.withShowDrawerOnFirstLaunch(false)
.withShowDrawerUntilDraggedOpened(false)
.build();
}
}
Вот код АДАПТЕРА
public class RVAdapter extends RecyclerView.Adapter<RVAdapter.MyViewHolder> {
private Context c;
private List<MovieModelClass> data;
private static String JSON_URL = "https://api.themoviedb.org/3/movie/";
private static String API = "?api_key=d58a97366ae95fdab0a70cdc8ed8db5f";
private static String GENRE = JSON_URL+"/genre/movie/list"+API;
public RVAdapter(Context c, List<MovieModelClass> data){
this.c=c;
this.data=data;
}
@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View v;
LayoutInflater inflater =LayoutInflater.from(c);
v = inflater.inflate(R.layout.list, parent,false);
return new MyViewHolder(v);
}
@Override
public void onBindViewHolder(@NonNull MyViewHolder holder, int i) {
holder.name.setText(data.get(i).getName());
holder.release.setText(data.get(i).getRelease());
Glide.with(c).load("https://image.tmdb.org/t/p/w500/"+data.get(i).getImage()).into(holder.image);
holder.info.setText(data.get(i).getInfo());
holder.stars.setText(data.get(i).getStars());
}
@Override
public int getItemCount() {
return data.size();
}
public class MyViewHolder extends RecyclerView.ViewHolder {
HtmlTextView info;
TextView name,release, stars;
ImageView image;
public MyViewHolder(@NonNull View v) {
super(v);
name = v.findViewById(R.id.cinema_name);
release = v.findViewById(R.id.cinema_release);
image = v.findViewById(R.id.image);
info = v.findViewById(R.id.info);
stars = v.findViewById(R.id.cinema_stars);
}
}
}