如何在一个webView上显示多个网站

How to display more than one website on a webView

我有一个 Recycler View,我希望我的 webView 在单击 Recycler View 上的不同项目时显示不同的网站。

我实现了一个回收器视图,它有一个 ImageView 和两个文本视图。我希望只要单击回收站视图上的项目,就可以在 webview 中打开一个网站。我希望在单击回收器视图中不同行的项目时打开不同的网站。

我尝试了不同的方法,但仍然无效。

这些是我的代码

RecyclerViewAdapter:

public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.ViewHolder>{
private static final String TAG = "RecyclerViewAdapter";

private ArrayList<String> mImageViews  = new ArrayList<>();
private  ArrayList<String> mBlogDescriptions = new ArrayList<>();
public ArrayList<String> mBlogNames = new ArrayList<>();
private Context mContext;
public RecyclerViewAdapter mViewAdapter;

public RecyclerViewAdapter(ArrayList<String> imageViews, ArrayList<String> blogDescriptions,ArrayList<String> blogNames, Context context) {
    mImageViews = imageViews;
    mBlogDescriptions = blogDescriptions;
    mBlogNames = blogNames;
    mContext = context;

    }

@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
    View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.layout_list_item, parent, false);
    ViewHolder holder = new ViewHolder(view);
    return holder;
}

@Override
public void onBindViewHolder(@NonNull final ViewHolder holder, final int position) {
    Log.d(TAG, "onBindViewHolder: called.");
    String currentItem = mBlogNames.get(position);

    Glide.with(mContext)
            .asBitmap()
            .load(mImageViews.get(position))
            .into(holder.mImageView);


    holder.mBlogDescription.setText(mBlogDescriptions.get(position));
    holder.mBlogName.setText(mBlogNames.get(position));
    holder.mBlogName.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Bundle extras = new Bundle();
            extras.putStringArray("url", new String[]{"www.goal.com","www.facebook.com","www.twitter.com","www.youtube.com"});
            extras.get(String.valueOf(position));
            Intent intent = new Intent(mContext,WebViewActivity.class);
            intent.putExtras(extras);
        }
    });
}

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

public class ViewHolder extends RecyclerView.ViewHolder {
    CircleImageView mImageView;
    TextView mBlogDescription;
    TextView mBlogName;
    RelativeLayout mRelativeLayout;

    public ViewHolder(@NonNull View itemView) {
        super(itemView);
        mImageView =itemView.findViewById(R.id.circular_image);
        mBlogDescription = itemView.findViewById(R.id.blog_description);
        mBlogName = itemView.findViewById(R.id.blog_name);
        mRelativeLayout = itemView.findViewById(R.id.parent_layout);
    }
}
}

WebViewActivity

public class WebViewActivity extends AppCompatActivity {
private WebView mWebView;

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

    mWebView = findViewById(R.id.web_view);

    WebSettings webSettings = mWebView.getSettings();
    webSettings.setJavaScriptEnabled(true);
    mWebView.setWebViewClient(new WebViewClient());

    Bundle extras = this.getIntent().getExtras();
    String[] array = extras.getStringArray("url");

    mWebView.loadUrl("array");
    }

@Override
public void onBackPressed() {
    if (mWebView.canGoBack()) {
        mWebView.goBack();
    } else {
        super.onBackPressed();
    }
}
}

请帮我解决。

谢谢

implementation 'androidx.browser:browser:1.0.0'
 CustomTabsIntent.Builder intentBuilder = new CustomTabsIntent.Builder();
            intentBuilder.setToolbarColor(getColor(context, R.color.colorPrimary));
            intentBuilder.setSecondaryToolbarColor(getColor(context, R.color.colorPrimaryDark));
            intentBuilder.build().launchUrl(context, Uri.parse(url));

希望对您有所帮助:)

据我了解,您正在尝试在回收站视图中创建不同的网页视图。

如果是这样我建议

  1. 正在创建一个 android 包含 webview 的资源文件
  2. 创建一个包含您希望在网络视图中看到的不同 url 的数组。
  3. 创建一个 recyclerview 适配器,用数组中的数据扩充资源文件。
  4. 将适配器传递到回收器视图中。

如果您在 recyclerview 中设置了 urls 视图。你需要做的是

  1. 您应该在回收站视图中实施 onTouchEventLister
  2. 然后通过获取触摸位置的视图来获取被触摸的视图。
  3. 从该视图获取数据,例如如果被触摸的视图是文本视图 url。您可以从中获取文本。
  4. 使用从 textview 获得的 url 更新 webview url。

由于两个视图在同一个上下文中,您可以从 ontoucheventlistener 中调用它们

我希望这能回答你的问题。