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