2016-03-24 5 views
-2

Ich benutze einen listAdapter, um ein listView zu füllen. aber ich habe ein Problem und es verursacht meine Anwendung zum Absturz. Ich wollte zunächst die Liste in XML-Objekten füllen, aber ich glaube, dass ein Listview wäre besser für meine application..THIS mein AdapterListenadapter mit Fragmenten

package com.example.victor.kidsrewards; 

    import android.content.Context; 
    import android.view.View; 
    import android.view.ViewGroup; 
    import android.widget.ArrayAdapter; 
    import android.view.LayoutInflater; 
    import android.widget.TextView; 

    import java.util.List; 

    /** 
    * Created by Victor on 3/20/2016. 
    */ 
    public class ListAdapter extends ArrayAdapter<Task> { 

     private final Context context; 

     private final List<Task> taskList; 

     public ListAdapter(Context context, List<Task> taskList){ 
      super(context, R.layout.fragment_tasks, taskList); 
      this.context = context; 
      this.taskList= taskList; 
     } 

     @Override 
     public View getView(int position, View convertView, ViewGroup parent){ 
      LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

      View rowView = inflater.inflate(R.layout.fragment_tasks,parent,false); 

      /*TextView taskText = (TextView)rowView.findViewById(R.id.newTaskText); 
      taskText.setText(taskList.get(position).getText()); 

      TextView pointsText = (TextView)rowView.findViewById(R.id.newPointsText); 
      pointsText.setText(taskList.get(position).getText());*/ 

      return rowView; 
     } 
    } 
** 

** das ist mein xml-Code

IS
<!-- TODO: Update blank fragment layout --> 
    <ListView 
     android:id="@android:id/list" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:textColor="#000" 
     android:text="TODO TEXT GOES_HERE"> 
    </ListView> 

</FrameLayout> 
** 

**

Das ist mein Fragment, wo ich meine listadapter nennen

package com.example.victor.kidsrewards; 


import android.app.Activity; 
import android.content.Context; 
import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.support.v4.app.ListFragment; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 


/** 
* A simple {@link Fragment} subclass. 
*/ 
public class TaskList extends ListFragment { 

    private TaskDataBase tdb; 
    public TaskList() { 
     // Required empty public constructor 
    } 


    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     // Inflate the layout for this fragment 
     return inflater.inflate(R.layout.fragment_task_list, container, false); 

    } 
    @Override 
    public void onActivityCreated(Bundle savedInstanceState) { 
     super.onActivityCreated(savedInstanceState); 
     tdb = new TaskDataBase(getContext()); 

     setListAdapter(new ListAdapter(getContext(), tdb.getTasks())); 


    } 
    @Override 
    public void onAttach(Context context) { 
     super.onAttach(context); 


    } 
} 
+0

Bitte geben Sie die Ausnahme an, die Sie erhalten –

+0

Bitte Post-Stack-Trace. –

+0

Wo Sie Ihr Textansichtslayout definiert haben, geben Sie bitte auch dieses Layout an. –

Antwort

0

Was ist der Name der Layout-Datei, die Sie aufgenommen haben? Wenn es fragment_tasks.xml ist, dann sollte fragment_tasks.xml kein ListView haben. Es sollte mindestens die textView mit der ID newTaskText haben. Definieren Sie das Inhaltslayout, das eine listView enthält. Dann gibt es ein Layout für jede Zeile. Dies sollte nur die TextView (und andere Ansichten, die für eine einzelne Zeile relevant sind) enthalten, nicht jedoch ListView.

+0

Es tut mir leid, das ist mein erstes Mal mit stackoverflow, ich habe gerade meine Frage aktualisiert .. Ich möchte nicht die TextViews verwenden, ich möchte nur die LIstView verwenden . Ich bin nicht sicher, ob ich irgendwo in meiner getView-Methode in meiner Liste verweisen und die textView entfernen sollte. Ich bin mir auch nicht sicher, wie ich darauf verweisen soll. Danke – vhdz04

+0

Wie kann ich diese rowView verwenden, um meine Liste zu füllen? – vhdz04

+0

Eine typische listView-basierte Benutzeroberfläche benötigt zwei Arten von Layouts. Einer ist das oberste Layout, das die ListView enthält, die Sie auffüllen möchten. Die andere ist das Layout für jede Zeile. Wenn alle Zeilen gleich aussehen, handelt es sich um ein einzelnes Zeilenlayout. Wenn nicht, könnten mehrere Zeilenlayouts vorhanden sein. Sie verwenden die erste, um setContentView in Ihrer Aktivität auszuführen. Die zweite ist diejenige, die Sie in getView verwenden, wenn Sie ein Zeilenlayout aufblasen. – greenrobo

Verwandte Themen