在arraylist中的指定位置获取元素

时间:2018-07-05 12:23:47

标签: java android

我有这个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

如何解决这个问题?

4 个答案:

答案 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();