мне нужно поместить ListView
в фрагменте, когда я делаю это приложение врезатьсяОшибка при размещении ListView в фрагменте
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ListView.setAdapter(android.widget.ListAdapter)' on a null object reference
Код:
public class FindPeopleFragment extends Fragment {
public FindPeopleFragment(){}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
//This layout contains your list view
View view = inflater.inflate(R.layout.tst, container, false);
//now you must initialize your list view
ListView listview =(ListView)view.findViewById(R.id.lvUsers);
//EDITED Code
ArrayList<User> arrayOfUsers = User.getUsers();
CustomUsersAdapter adapter = new CustomUsersAdapter(getActivity(), arrayOfUsers);
listview.setAdapter(adapter);
//To have custom list view use this : you must define CustomeAdapter class
// listview.setadapter(new CustomeAdapter(getActivity()));
//getActivty is used instead of Context
return view;
}
}
public class CustomUsersAdapter extends ArrayAdapter<User> {
public CustomUsersAdapter(Context context, ArrayList<User> users) {
super(context, 0, users);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
User user = getItem(position);
if (convertView == null) {
convertView = LayoutInflater.from(getContext()).inflate(R.layout.item_user, parent, false);
}
TextView tvName = (TextView) convertView.findViewById(R.id.tvName);
TextView tvHome = (TextView) convertView.findViewById(R.id.tvHometown);
tvName.setText(user.name);
tvHome.setText(user.hometown);
return convertView;
}
}
public class User {
public String name;
public String hometown;
public User(String name, String hometown) {
this.name = name;
this.hometown = hometown;
}
public static ArrayList<User> getUsers() {
ArrayList<User> users = new ArrayList<User>();
users.add(new User("Harry", "San Diego"));
users.add(new User("Marla", "San Francisco"));
users.add(new User("Sarah", "San Marco"));
return users;
}
}
Если я пытаюсь использовать простой arrayadapter он работает нормально рабочий код
public class CommunityFragment extends Fragment {
public CommunityFragment(){}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
//This layout contains your list view
View view = inflater.inflate(R.layout.tst, container, false);
//now you must initialize your list view
ListView listview =(ListView)view.findViewById(R.id.list);
//EDITED Code
String[] items = new String[] {"Item 1", "Item 2", "Item 3"};
ArrayAdapter<String> adapter =
new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, items);
listview.setAdapter(adapter);
//To have custom list view use this : you must define CustomeAdapter class
// listview.setadapter(new CustomeAdapter(getActivity()));
//getActivty is used instead of Context
return view;
}
}
Попытка вызвать виртуальный метод 'void android.widget.ListView.setAdapter (android.widget.ListAdapter)' на ссылку нулевого объекта – user3060030
Вы точно используете мои коды «CustomUsersAdapter»? скопируйте весь код, чтобы заменить свой старый «CustomUsersAdapter» – Xcihnegn
супер удален. Неявный супер-конструктор ArrayAdapter() не определен. Должен явно ссылаться на другой конструктор –
user3060030