android - Fragment 中的 ListView 不显示

标签 android android-listview android-fragments

我有一个应用程序,其中有多个选项卡;与任何人互动都会调用要显示的 fragment 。不幸的是,当我切换到下面的 fragment 时,我的 listView 没有出现,尽管有问题的列表已填充。非常感谢您提供的任何帮助。

fragment 相关代码:

public class Fragment_1 extends SherlockFragment {
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
    //If time permits, I will try to make a Custom Adapter implemented with a TreeSet
    TreeSet<BlacklistWord> theSet =  MainActivity.getInstance().datasource.GetAllWords();
    ArrayList<String> list = new ArrayList<String>();
    for(BlacklistWord i :theSet){
        System.out.println(i.getWord());
        list.add(i.getWord());
    }
    Collections.sort(list);

    //Making BlackList 
    listView = new ListView(getActivity());
    listView.findViewById(R.id.listview);
    adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1,  list);
    listView.setAdapter(adapter);
    ((BaseAdapter) listView.getAdapter()).notifyDataSetChanged();
    container.addView(listView);
    return inflater.inflate(R.layout.blacklist, container, false);
    //      return inflater.inflate(R.layout.blacklist, container, false);
}
}

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="match_parent"
android:orientation="vertical" >

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

最佳答案

将代码改为(盲编码):

public class Fragment_1 extends SherlockFragment {

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
    /**
    ** Change the way you get the data. Don't keep references to activities like that.
    **/
    TreeSet<BlacklistWord> theSet =  MainActivity.getInstance().datasource.GetAllWords();
    ArrayList<String> list = new ArrayList<String>();
    for(BlacklistWord i :theSet){
        System.out.println(i.getWord());
        list.add(i.getWord());
    }
    Collections.sort(list);
    View v = inflater.inflate(R.layout.blacklist, container, false);

    listView = view.findViewById(R.id.listview);
    adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1,  list);
    listView.setAdapter(adapter);
    return view;
}
}

你的 ListView 没有显示,因为你错误地创建了一个带有构造函数的 ListView,然后你调用了一个 findViewById(它没有任何用处),然后设置一个适配器,调用通知数据集已更改,最后你'正在返回另一个列表。

关于android - Fragment 中的 ListView 不显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17059809/

相关文章:

android - 如何从 MediaStore 获取视频的时长?

android - 包含 TableLayouts 的 fragment 的 ViewPager 加载缓慢 :

android - 带复选框的 ListView Holder

java - 当 FragmentActivity 在 Android 中进入后台时出现 NotSerializableException

android - 后退按钮作为 fragment 中的菜单

android - Sencha 2.4 + cordova 应用程序无法在 Android 上加载 "TypeError: Result of expression ' b.onTargetTouchMove.bind' [undefined] 不是函数。在...”

java - mp.isPlaying() 抛出 Fatal NullPointerException

android - SurfaceView 上的 YouTubePlayerView(CameraPreview)

java - 如何获取ListView中显示的Spinners的值?

java - 单击 fragment ListView 上的项目后如何刷新数据