Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在片段中设置ListView适配器_Java_Android_Listview_Android Fragments - Fatal编程技术网

Java 在片段中设置ListView适配器

Java 在片段中设置ListView适配器,java,android,listview,android-fragments,Java,Android,Listview,Android Fragments,我正在尝试在fragmnet中将ListView与自定义适配器(baseAdapter)一起使用 当我直接在MainActivity中使用这段代码时,一切正常,但当我在片段中使用这段代码时,它没有崩溃,但没有显示任何内容,它只是一个空白片段。另外,当我尝试使用simple arrayAdapter在片段中绑定一个textView时,它工作得很好,所以我认为问题将出现在我的自定义适配器中 为什么它不显示ListView 我的代码:Fragment1.java private SQLiteD

我正在尝试在fragmnet中将ListView与自定义适配器(baseAdapter)一起使用

当我直接在MainActivity中使用这段代码时,一切正常,但当我在片段中使用这段代码时,它没有崩溃,但没有显示任何内容,它只是一个空白片段。另外,当我尝试使用simple arrayAdapter在片段中绑定一个textView时,它工作得很好,所以我认为问题将出现在我的自定义适配器中

为什么它不显示ListView

我的代码:Fragment1.java

    private SQLiteDatabase dataBaseall;
    HashMap<String, String> ChatqueryValues;
    HashMap<String, String> ChatqueryValuesB;

    ChatDbHelper Chatcontroller = new ChatDbHelper(getActivity());
    ChatAllDbHelper controller_all = new ChatAllDbHelper(getActivity());

    private AlertDialog.Builder build;

    Cursor cursor;
    Contact_Activity_Adapter ListAdapter;
    private ArrayList<String> conId = new ArrayList<String>();
    private ArrayList<String> con_fullname = new ArrayList<String>();
    private ArrayList<String> con_number = new ArrayList<String>();
    private ArrayList<String> con_username = new ArrayList<String>();
    private ArrayList<String> con_userid = new ArrayList<String>();
    private ArrayList<String> con_pic = new ArrayList<String>();
    private ArrayList<String> con_ischat = new ArrayList<String>();

    ListView LISTVIEW;


    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater,
                             ViewGroup container, Bundle savedInstanceState) {
        return  inflater.inflate(R.layout.frag1,container,false);
    }

    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
      //  ListView listView = (ListView) getActivity().findViewById(R.id.List);

        LISTVIEW = (ListView)getActivity(). findViewById(R.id.List);
        SQLITEHELPER = new ContactDB(getActivity());
        mHelperall = new ChatAllDbHelper(getActivity());

    }

    @Override
    public void onResume() {

        ShowSQLiteDBdata();

        super.onResume();
    }


    private void ShowSQLiteDBdata() {

        SQLITEDATABASE = SQLITEHELPER.getWritableDatabase();

        cursor = SQLITEDATABASE.rawQuery("SELECT * FROM contact ", null);

        conId.clear();
        con_fullname.clear();
        con_number.clear();
        con_username.clear();
        con_userid.clear();
        con_pic.clear();
        con_ischat.clear();


        if (cursor.moveToFirst()) {
            do {
                conId.add(cursor.getString(cursor.getColumnIndex(ContactDB.KEY_ID)));
                con_fullname.add(cursor.getString(cursor.getColumnIndex(ContactDB.KEY_CON_FULLNAME)));
                con_number.add(cursor.getString(cursor.getColumnIndex(ContactDB.KEY_CON_NUMBER)));
                con_username.add(cursor.getString(cursor.getColumnIndex(ContactDB.KEY_CON_USERNAME)));
                con_userid.add(cursor.getString(cursor.getColumnIndex(ContactDB.KEY_CON_USERID)));
                con_pic.add(cursor.getString(cursor.getColumnIndex(ContactDB.KEY_CON_PIC)));
                con_ischat.add(cursor.getString(cursor.getColumnIndex(ContactDB.KEY_CON_ISCHAT)));

            } while (cursor.moveToNext());
        }

        ListAdapter = new Contact_Activity_Adapter(getActivity(),

                conId,
                con_fullname,
                con_number,
                con_username,
                con_userid,
                con_pic,
                con_ischat

        );

        Collections.sort(con_fullname, String.CASE_INSENSITIVE_ORDER);

        LISTVIEW.setAdapter(ListAdapter);
        ListAdapter.notifyDataSetChanged();

        cursor.close();
        // Collections.sort(con_fullname);
    }




}
private-SQLiteDatabase-dataBaseall;
HashMap聊天值;
HashMap ChatqueryValuesB;
ChatDbHelper Chatcontroller=新的ChatDbHelper(getActivity());
ChatAllDbHelper控制器_all=新建ChatAllDbHelper(getActivity());
私有AlertDialog.Builder构建;
光标;
联系活动适配器列表适配器;
private ArrayList conId=new ArrayList();
private ArrayList con_fullname=new ArrayList();
私有ArrayList con_number=新ArrayList();
私有ArrayList con_username=新ArrayList();
private ArrayList con_userid=new ArrayList();
private ArrayList con_pic=new ArrayList();
private ArrayList con_ischat=new ArrayList();
列表视图列表视图;
@可空
@凌驾
创建视图上的公共视图(更平坦的充气机,
视图组容器,捆绑包savedInstanceState){
返回充气机。充气(右布局图frag1,容器,假);
}
@凌驾
已创建ActivityState上的公共无效(Bundle savedInstanceState){
super.onActivityCreated(savedInstanceState);
//ListView ListView=(ListView)getActivity().findViewById(R.id.List);
LISTVIEW=(LISTVIEW)getActivity().findViewById(R.id.List);
SQLITEHELPER=newcontactdb(getActivity());
mHelperall=newchatalldbhelper(getActivity());
}
@凌驾
恢复时公开作废(){
ShowSQLiteDBdata();
super.onResume();
}
私有void ShowSQLiteDBdata(){
SQLITEDATABASE=SQLITEHELPER.getWritableDatabase();
cursor=SQLITEDATABASE.rawQuery(“选择*来自联系人”,null);
圆锥形,清晰();
con_fullname.clear();
con_number.clear();
con_username.clear();
con_userid.clear();
如图所示,清除();
con_ischat.clear();
if(cursor.moveToFirst()){
做{
add(cursor.getString(cursor.getColumnIndex(ContactDB.KEY_ID));
con_fullname.add(cursor.getString(cursor.getColumnIndex(ContactDB.KEY_con_fullname));
con_number.add(cursor.getString(cursor.getColumnIndex(ContactDB.KEY_con_number));
con_username.add(cursor.getString(cursor.getColumnIndex(ContactDB.KEY_con_username));
con_userid.add(cursor.getString(cursor.getColumnIndex(ContactDB.KEY_con_userid));
con_pic.add(cursor.getString(cursor.getColumnIndex(ContactDB.KEY_con_pic));
con_ischat.add(cursor.getString(cursor.getColumnIndex(ContactDB.KEY_con_ischat));
}while(cursor.moveToNext());
}
ListAdapter=新联系人\活动\适配器(getActivity(),
圆锥形,
con_全名,
con_编号,
con_用户名,
con_userid,
con_pic,
康尼斯卡特
);
Collections.sort(con\u fullname,String.CASE\u INSENSITIVE\u ORDER);
setAdapter(ListAdapter);
ListAdapter.notifyDataSetChanged();
cursor.close();
//Collections.sort(con_全名);
}
}
那是错误的。您正在尝试获取指向活动列表的链接,但您的列表处于片段中。您需要从onCreateView中的片段布局获取它,如下所示:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.frag1,container,false);
    LISTVIEW = (ListView) view.findViewById(R.id.List);
    return view;
}

更多信息。这里有许多类似的问题。

LISTVIEW=(LISTVIEW)getActivity()。findViewById(R.id.List)请不要使用此。。。关于这个问题有无数的答案:如何正确地获得片段中的视图。。。做一些研究1)不要用大写字母锁定变量名。2)强烈考虑使用java类存储一个代码>联系人< /代码>,并使用<代码>列表>代码> 7个单独的列表…这真是糟糕的设计,不起作用,请提供更多关于如何实现它的信息。我不会。如果您不知道如何做,请从一些基本教程或示例开始。顺便说一句,看起来这不是你代码中唯一的错误。
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.frag1,container,false);
    LISTVIEW = (ListView) view.findViewById(R.id.List);
    return view;
}