无法从ArrayList强制转换为ListAdapter

时间:2019-06-11 13:29:08

标签: android

我正在处理片段,我想在onCreateView()方法中创建一个列表视图。但是我在ArrayList<>

中遇到一些类型转换错误
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
    View v= inflater.inflate(R.layout.view , container , false);

    lv1=(ListView)v.findViewById(R.id.list);

    ConnectDatabase db=new ConnectDatabase(getActivity());

    ArrayList<String> theList=new ArrayList<>();
    Cursor data=db.retrievee();

    if(data.getCount() == 0)
    {


    }
    else
    {
        while (data.moveToNext())
        {
            theList.add(data.getString(0));

            /*line of Error*/  
            ListAdapter listAdapter=new ArrayList<>(this,android.R.layout.simple_list_item_1,theList);

            lv1.setAdapter(listAdapter);
        }
    }

    lv1.setOnItemClickListener(this);

    return v;
}

2 个答案:

答案 0 :(得分:1)

替换

ListAdapter listAdapter=new ArrayList<>(this,android.R.layout.simple_list_item_1,theList);

使用

ListAdapter listAdapter =new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,theList);

答案 1 :(得分:0)

您正在尝试将对象强制转换为与其不具有共同基础的类。 ListAdapter用于将数据排列并呈现给ListView,而ArrayList只是其他对象和基元的有序集合。有点像试图将香蕉扔到电话上,只是因为它们看起来很相似并不意味着它将起作用。

您需要声明一个实现ListAdapter接口的类。一个现成的选项是ArrayAdapter,因为您已经在使用ArrayList<String>作为列表数据。

ListAdapter listAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, theList);
lv1.setAdapter(listAdapter);