Я использовал WebView для загрузки данных html для каждого элемента RecyclerView.
У меня проблемы, когда сделал это:
Некоторое время WebView отображает данные о сбое. Когда я прокручиваю RecyclerView, какой-то элемент покажет данные другого элемента. [Решено]
Высота веб-просмотра не удалась. Один предмет будет содержать высоту другого предмета в RecyclerVew.
Как я могу их исправить?
Вот мой адаптер:
class ParentAdapter extends RecyclerView.Adapter<ParentAdapter.MyViewHolder> {
private String[] urlList;
public ParentAdapter(String[] urlList) {
this.urlList = urlList;
}
@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View itemView = LayoutInflater.from(parent.getContext())
.inflate(R.layout.row_my_web, parent, false);
return new MyViewHolder(itemView);
}
@Override
public void onBindViewHolder(final @NonNull MyViewHolder holder, int position) {
holder.myWebView.loadData(content + styleWebView, "text/html", "UTF-8");
}
@Override
public int getItemCount() {
return urlList.length;
}
class MyViewHolder extends RecyclerView.ViewHolder {
WebView myWebView;
TextView tv;
MyViewHolder(View itemView) {
super(itemView);
myWebView = itemView.findViewById(R.id.myWebView);
WebSettings webSettings = myWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN);
webSettings.setAppCacheEnabled(false);
myWebView.setWebChromeClient(new WebChromeClient());
myWebView.addJavascriptInterface(new WebAppInterface(myWebView.getContext()), "Android");
myWebView.setWebViewClient(new WebViewClient());
}
}
class WebAppInterface {
Context mContext;
WebAppInterface1(Context c) {
mContext = c;
}
@JavascriptInterface
public void clickMention(String idMention) {
Toast.makeText(mContext, idMention, Toast.LENGTH_SHORT).show();
}
@JavascriptInterface
public void clickPhone(String phone) {
Toast.makeText(mContext, phone, Toast.LENGTH_SHORT).show();
}
@JavascriptInterface
public void clickEmail(String phone) {
Toast.makeText(mContext, phone, Toast.LENGTH_SHORT).show();
}
}
Мой
row_my_web.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#888585"
android:orientation="vertical"
android:paddingBottom="10dp">
<WebView
android:id="@+id/myWebView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#ffffff" />
</LinearLayout>