2016-03-24 3 views
-2

Я использую listAdapter, чтобы попытаться заполнить listView. но у меня проблема, и это приводит к сбою моего приложения. я изначально хотел, чтобы заполнить список объектов в XML, но я считаю, что ListView будет лучше для моих application..THIS МОЯ ADAPTERадаптер списка с использованием фрагментов

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; 
     } 
    } 
** 

** это мой XML-код

<!-- 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> 
** 

**

Это мой фрагмент, где я называю мой listadapter

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

Пожалуйста, предоставьте исключение, которое вы получите –

+0

Просьба указать трассировку стека. –

+0

Если вы определили свой макет текста, укажите этот макет. –

ответ

0

Что такое имя файла макета, который вы включили? Если это файл fragment_tasks.xml, тогда у файла fragment_tasks.xml не должно быть ListView. Он должен по крайней мере иметь textView с идентификатором newTaskText. Определите макет содержимого, который содержит listView. Затем есть макет для каждой строки. Это должно содержать только TextView (и другие представления, относящиеся к одной строке), но не ListView.

+0

Мне жаль, что это мой первый раз, используя stackoverflow, я только что обновил свой вопрос .. Я не хочу использовать TextViews, я хочу использовать LIstView , Я не уверен, что если я буду ссылаться на то, что где-то в моем методе getView в моем списке, и удалить textView. Я также не уверен, как это сделать. спасибо – vhdz04

+0

как я могу использовать этот rowView для заполнения моего списка? – vhdz04

+0

Типичный пользовательский интерфейс, основанный на listView, требует двух типов макетов. Один из них - это макет верхнего уровня, содержащий список ListView, который вы хотите заполнить. Другая - макет для каждой строки. Если все строки выглядят одинаково, то это макет одной строки, если нет, может быть несколько макетов строк. Вы используете первый, чтобы сделать setContentView в своей деятельности. Второй - тот, который вы используете в getView при раздувании макета строки. – greenrobo

Смежные вопросы