如何在一个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));
希望对您有所帮助:)
据我了解,您正在尝试在回收站视图中创建不同的网页视图。
如果是这样我建议
- 正在创建一个 android 包含 webview 的资源文件
- 创建一个包含您希望在网络视图中看到的不同 url 的数组。
- 创建一个 recyclerview 适配器,用数组中的数据扩充资源文件。
- 将适配器传递到回收器视图中。
如果您在 recyclerview 中设置了 urls 视图。你需要做的是
- 您应该在回收站视图中实施 onTouchEventLister
- 然后通过获取触摸位置的视图来获取被触摸的视图。
- 从该视图获取数据,例如如果被触摸的视图是文本视图 url。您可以从中获取文本。
- 使用从 textview 获得的 url 更新 webview url。
由于两个视图在同一个上下文中,您可以从 ontoucheventlistener 中调用它们
我希望这能回答你的问题。
我有一个 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));
希望对您有所帮助:)
据我了解,您正在尝试在回收站视图中创建不同的网页视图。
如果是这样我建议
- 正在创建一个 android 包含 webview 的资源文件
- 创建一个包含您希望在网络视图中看到的不同 url 的数组。
- 创建一个 recyclerview 适配器,用数组中的数据扩充资源文件。
- 将适配器传递到回收器视图中。
如果您在 recyclerview 中设置了 urls 视图。你需要做的是
- 您应该在回收站视图中实施 onTouchEventLister
- 然后通过获取触摸位置的视图来获取被触摸的视图。
- 从该视图获取数据,例如如果被触摸的视图是文本视图 url。您可以从中获取文本。
- 使用从 textview 获得的 url 更新 webview url。
由于两个视图在同一个上下文中,您可以从 ontoucheventlistener 中调用它们
我希望这能回答你的问题。