Я не знаю, как загрузить веб-сайт на новый fragment
с веб-представлением, нажав на один из элементов, определенных в Recyclerview
. Вот мой код:
NewsItems.java
package com.example.assignment_4_task_1;
import android.view.View;
public class NewsItems {
private int image;
private String text;
public NewsItems(){
}
public NewsItems(int image, String text) {
this.image = image;
this.text = text;
}
//Getter
public int getImage() {
return image;
}
public String getText() {
return text;
}
}
```
Recyclerview Adapter.java
package com.example.assignment_4_task_1;
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentTransaction;
import androidx.recyclerview.widget.RecyclerView;
import java.util.List;
public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.ViewHolder> {
Context mContext;
List<NewsItems> mData;
public RecyclerViewAdapter(Context mContext, List<NewsItems> mData) {
this.mContext = mContext;
this.mData = mData;
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view;
view = LayoutInflater.from(mContext).inflate(R.layout.layout_grid_item, parent, false);
ViewHolder viewHolder = new ViewHolder(view);
return viewHolder;
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
holder.image.setImageResource(mData.get(position).getImage());
holder.text.setText(mData.get(position).getText());
}
@Override
public int getItemCount() {
return mData.size();
}
public static class ViewHolder extends RecyclerView.ViewHolder {
private ImageView image;
private TextView text;
FragmentNewsItems fragmentNewsItems = new FragmentNewsItems();
public ViewHolder(@NonNull View itemView) {
super(itemView);
image = itemView.findViewById(R.id.image);
text = itemView.findViewById(R.id.text);
}
}
}
FragmentNewsItems.java
package com.example.assignment_4_task_1;
import android.content.Context;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.RecyclerView;
import androidx.recyclerview.widget.StaggeredGridLayoutManager;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
public class FragmentNewsItems extends Fragment {
View view;
private RecyclerView recyclerView;
private List<NewsItems> cyberNews;
private FragmentNewsItems fragmentNewsItems;
public FragmentNewsItems(){
}
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
view = inflater.inflate(R.layout.f_news_items_layout, container, false);
recyclerView = (RecyclerView) view.findViewById(R.id.news_items_recycler_view);
RecyclerViewAdapter recyclerAdapter = new RecyclerViewAdapter(getContext(), cyberNews);
recyclerView.setLayoutManager(new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL));
recyclerView.setAdapter(recyclerAdapter);
return view;
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
cyberNews = new ArrayList<>();
cyberNews.add(new NewsItems(R.drawable.cyber1, "The of cybersecurity in 5G-connected world"));
cyberNews.add(new NewsItems(R.drawable.cyber2, "Google discovered several iPhone security flaws, and Apple still hasn't patched one"));
cyberNews.add(new NewsItems(R.drawable.cyber3, "WhatsApp and Telegram media files aren't so secure"));
cyberNews.add(new NewsItems(R.drawable.cyber4, "Microsoft Exposes Russian Cyberattacks on Phones, Printers, Video Decoders"));
cyberNews.add(new NewsItems(R.drawable.cyber5, "Tesla demonstrated the power of The Internet of Things"));
}
}
и
MainActivity.java
package com.example.assignment_4_task_1;
import android.os.Bundle;
import com.google.android.material.tabs.TabLayout;
import androidx.viewpager.widget.ViewPager;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
private TabLayout tabs;
private ViewPager viewPager;
private SectionsPagerAdapter adapter;
private FragmentNewsItems fragmentNewsItems;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tabs = findViewById(R.id.tabs);
viewPager = findViewById(R.id.view_pager);
adapter = new SectionsPagerAdapter(getSupportFragmentManager());
//Add Fragment to the Layout
adapter.addFragment(new FragmentNewsItems(), "CYBERSECURITY");
adapter.addFragment(new FragmentWebPage(), "AI");
viewPager.setAdapter(adapter);
tabs.setupWithViewPager(viewPager);
}
}
Вывод состоит в том, что он показывает один два фрагментав viewpager
(с двумя вкладками соответственно) и в первом фрагменте он показывает список новостей в шахматном порядке. Моя задача состоит в том, чтобы «функционализировать» приложение, чтобы оно загружало веб-сайт, щелкнув один из этих элементов, перечисленных здесь:
(FragmentNewsItems.java, который вы видите выше)
cyberNews = new ArrayList<>();
cyberNews.add(new NewsItems(R.drawable.cyber1, "The of cybersecurity in 5G-connected world"));
cyberNews.add(new NewsItems(R.drawable.cyber2, "Google discovered several iPhone security flaws, and Apple still hasn't patched one"));
cyberNews.add(new NewsItems(R.drawable.cyber3, "WhatsApp and Telegram media files aren't so secure"));
cyberNews.add(new NewsItems(R.drawable.cyber4, "Microsoft Exposes Russian Cyberattacks on Phones, Printers, Video Decoders"));
cyberNews.add(new NewsItems(R.drawable.cyber5, "Tesla demonstrated the power of The Internet of Things"));
Но я не знаю, как заставить это работать.
Я пробовал разные способы, но кажется, что я просто не понимаю логику этого приложения. Я новичок в Android, и сейчас мне очень сложно ориентироваться между различными фрагментами, действиями, их инициализацией и т. Д.
Приложение работает, оно показывает все макеты, которые я создал, но делаетне открывается webview