我有这个arraylist
:
List<View> mListViews = new ArrayList<View>();
由...填充
addView(mListViews, "file:///android_asset/a.html");
addView(mListViews, "file:///android_asset/b.html");
addView(mListViews, "file:///android_asset/c.html");
和addView
方法:
private void addView(List<View> viewList,String url) {
WebView webView=new WebView(this);
webView.loadUrl(url);
viewList.add(webView);
}
我想从arraylist
中的第二个位置获取元素作为字符串。因此,预期结果为file:///android_asset/b.html
。我尝试过
String test = mListViews.get(1);
但是我收到了错误不兼容的类型,要求为java.lang.String
,找到为android.view.View
。
如何解决这个问题?
答案 0 :(得分:1)
使用此:
String test = ( (WebView) mListViews.get(1) ).getUrl();
请注意,如果您在页面加载完成之前执行此操作,则测试将为null
。
另一种选择是创建一个封装WebView和url字符串的类,然后创建该类的对象列表。
答案 1 :(得分:1)
如果这是我的问题,我将执行以下操作:
创建模型类...
public class ListModel {
View view;
String url;
public ListModel (View view, String url) {
this.view = view;
this.url = url;
}
public View getView() {
return view;
}
public void setView(View view) {
this.view = view;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
}
制作一个包含该课程的列表 ...
public class MainActivity extends AppCompatActivity {
List<ListModel> listModel;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listModel = new ArrayList<>();
listModel.add(new ListModel(view, "url"));
}
}
您可以在此处创建 for循环以获取视图和/或网址。
for (int i = 0; i < listModel.size(); i++) {
View getView = listModel.get(i).getView();
String getUrl = listModel.get(i).getUrl();
}
现在,请记住,我的代码将无法工作,因为我没有创建要放入列表的VIEW。但这可能是最好的解决方法。
答案 2 :(得分:0)
在撰写本文时,您拥有ArrayList
类型的View
。
mListViews.get(1)
的结果是View
的类型。您无法将View
分配给String
变量。
问题是关于您创建ArrayList<View>
并用WebView
填充的内容吗?
答案 3 :(得分:0)
如果您需要webView中的网址,我认为您只需要这样做:
String test = mListViews.get(1).getURL();