Jeu de Carte Dans le Fragment de ListView
Je suis nouveau sur Android. Essayer d'obtenir une liste déjà contrôlés dans mon Activité Principale à un fragment.
Mon MainActivity
s'étend FragmentActivity
. Je reçois un null pointeur pour le jeu de carte, et pour la ligne contenant le populateList()
méthode.
Ne sais pas si la solution est avec getActivity() et/ou la setListAdapter()
option que j'ai lu à propos de. Je sais qu'il est de trouver les articles de la sauve, mais je ne suis pas sûr de savoir comment corriger ce problème. Aucune information serait grandement apprécié.
Infos Supplémentaires:
Je suis à l'aide de android.support.v4.app.FragmentActivity
. FragmentS
est dans public class TabbedActivity extends Fragment {
public static class FragmentS extends Fragment {
public FragmentS() {
}
List<LiftSave> LiftSaves = new ArrayList<LiftSave>();
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.listview_s,
container, false);
DatabaseHandler dbHandler;
dbHandler = new DatabaseHandler (getActivity().getApplicationContext());
if (dbHandler.getLiftSavesCount() != 0)
LiftSaves.addAll(dbHandler.getAllLiftSaves());
populateList();
return rootView;
}
private void populateList() {
ListView saveListView = (ListView)getActivity().findViewById(R.id.saveListView);
ArrayAdapter<LiftSave> saveAdapter;
saveAdapter = new SaveListAdapter();
saveListView.setAdapter(saveAdapter);
}
public class SaveListAdapter extends ArrayAdapter<LiftSave> {
public SaveListAdapter() {
super(getActivity(), R.layout.listview_item, LiftSaves);
}
@Override
public View getView(int position, View view, ViewGroup parent) {
if (view == null)
view = getActivity().getLayoutInflater().inflate(R.layout.listview_item, parent, false);
LiftSave currentLiftSave = LiftSaves.get(position);
TextView liftName = (TextView) view.findViewById(R.id.liftName);
liftName.setText(currentLiftSave.getLiftName());
TextView maxValue = (TextView) view.findViewById(R.id.maxValue);
maxValue.setText(currentLiftSave.getMaxValue());
TextView weightAndReps = (TextView) view.findViewById(R.id.weightAndReps);
weightAndReps.setText(currentLiftSave.getRepsAndWeight());
TextView liftNotes = (TextView) view.findViewById(R.id.liftNotes);
liftNotes.setText(currentLiftSave.getLiftNotes());
TextView date = (TextView) view.findViewById(R.id.todayDate);
date.setText(currentLiftSave.getTodayDate());
return view;
}
}}
XML:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".TabbedActivity$FragmentS"
android:background="@android:color/holo_blue_dark">
<LinearLayout
android:id="@+id/tabSaveList"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
xmlns:android="http://schemas.android.com/apk/res/android">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="Saved Maxes"
android:id="@+id/textView"
android:layout_gravity="center"
android:layout_marginTop="10dp"
android:textColor="#fffaf4a1"
android:textStyle="bold" />
<ListView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/saveListView" />
</LinearLayout>
</RelativeLayout>
- 1) Pourquoi vous instancier votre adaptateur à deux reprises (en
onCreateView()
puis danspopulateList()
) ? ---- 2) MettreList<LiftSave> LiftSaves = new ArrayList<LiftSave>();
avantonCreateView()
méthode - Haha, la plupart du temps hors de la confusion. J'ai déménagé Liste<LiftSave> comme vous l'avez mentionné avant onCreateView() . Merci pour votre réponse.
- Malheureusement, je ne. java.lang.NullPointerException: Tentative d'invoquer la méthode virtuelle " void android.widget de.ListView.setAdapter(android.widget de.ListAdapter) " sur une référence d'objet nul
- Assurez-vous d'avoir un
ListView
objet avecsaveListView
que l'identification, danslistview_s.xml
- Il est, ainsi que l'Id correspond. FragmentS est contenue dans une autre classe appelée
public class TabbedActivity extends Fragment {
. Vous ne savez pas Si ce qui compte. Désolé pour mon formatage, pas utilisé pour l'affichage. - Vous pouvez poster votre
listview_s.xml
? - XML est en place. Également mentionné que je suis en utilisant
android.support.v4.app.FragmentActivity
InformationsquelleAutor Austin | 2015-04-05
Vous devez vous connecter pour publier un commentaire.
Je pense que le Problème est, que vous la recherche de votre Activité pour la liste mais pas la rootView vous avez récupéré dans onCreateView()
Peut-être essayer ceci:
...
saveListView = rootView.findViewById(R.id.saveListView);
passeandroid.view.View
, oùandroid.widget.ListView
est nécessaire. Je le lance et Ça a fonctionné. La liste n'a remplir. Merci beaucoup pour cette. Cependant, les entrées sont coupés en deux dans la liste comme je n'ai jamais vu.