缺少getListView

时间:2016-03-28 15:20:03

标签: android

我创建了一个 ListView 来列出所有活动,但是当我想调用该方法时,我找不到 getListView

我的activity_fragment.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">


        <ListView
            android:id="@+id/ListActivity"
            android:layout_width="wrap_content"
            android:layout_height="match_parent">

        </ListView>


</RelativeLayout>

并且在我的 MainActivity.java 中似乎出现了错误

  

getListView

方法,我不知道为什么

enter image description here

6 个答案:

答案 0 :(得分:4)

使用getListView()而不是通常的ListActivity时,您可以使用Activity。在您的代码中,您错了并使ListView id “成为视图”ListActivity的特殊标识符,因此您只需在代码中访问它

ListView lv = (ListView) findViewById(R.id.ListActivity);

答案 1 :(得分:2)

尝试使用(ListView)findViewById(R.id.ListActivity)而不是getListView()

答案 2 :(得分:2)

如果您在片段中有ListView,则可以使用:

ListView list = (ListView)findViewById(android.R.id.list);

但是如果你想直接使用getListView,你必须将ListView的id称为

android:id="@android:id/list"

希望得到这个帮助。

答案 3 :(得分:2)

您的活动必须从ListActivity继承。你的课应该从

开始
public class MyListAdapter extends ListActivity {

   ...

}   

然后你可以使用方法

getListView()

这是official documentation

第二个解决方案

如果您使用片段,则可以使用

访问ListView
ListView lv = (ListView) rootView.findViewById(R.id.id_of_your_listView);

rootView是您在onCreateView片段方法中获得的视图

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View rootView =  inflater.inflate(R.layout.example_fragment, container, false);

    return rootView;
}

答案 4 :(得分:1)

您无法扩展ListActivity因为1)您想要使用片段而2)setSupportActionBar类没有方法ListActivity ...

无论如何......在你的问题中

  

我的activity_fragment.xml

     

<!-- XML code -->

由于findViewById不在ListView范围内,您无法使用ActivityListView课程中获取activity_main.xml

你必须在Fragment中做到这一点。

public class YourFragment extends Fragment {

    private ListView yourListView;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View v = inflater.inflate(R.layout.activity_fragment, container, false);

        this.yourListView = (ListView) v.findViewById(R.id.listView);

        // adapter stuff...

        return v;
    }
}

答案 5 :(得分:1)

另请注意,您没有将ListView传递给适配器,而是将适配器传递给ListView

ListView list = (ListView)findViewById(R.id.ListActivity);
list.setAdapter(adapter);