2014-01-13 2 views
0

Я пытаюсь реализовать простой список дел, используя это решение Add user input into a ListView on button click, но когда я реализую onCreate решения, я получаю следующие ошибки: http://pastebin.com/9CBCMrjv Я использую фрагменты в этом приложении, и мне интересно, может ли это быть причиной ошибки, поскольку, возможно, конструкторы не относятся к фрагментам.Как реализовать простой список дел с помощью listview?

Может кто-нибудь понять ошибки или где я ошибаюсь в этой реализации? Мое понимание ошибок заключается в том, что это решение не может быть применено к моему классу, поскольку оно связано с фрагментом вместо простой активности.

Это полный класс, чтобы дать вам лучшее понимание проблемы:

public class TopRatedFragment extends Fragment implements OnClickListener { 

ListView mListView; 
EditText mValue; 
Button mAdd; 
ArrayList<String> list = new ArrayList<String>(); 
ArrayAdapter<String> adapter; 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 

    View rootView = inflater.inflate(R.layout.fragment_top_rated, container, false); 
    return rootView;  
} 

@Override 
public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.fragment_top_rated); 

    mAdd = (Button)findViewById(R.id.newList); 
    mAdd.setOnClickListener(this); 
    mValue = (EditText)findViewById(R.id.listData); 
    adapter = new ArrayAdapter<String>(this, android.R.layout.simple_expandable_list_item_1, list); 

    // set the lv variable to your list in the xml 
    mListView=(ListView)findViewById(R.id.listView); 
    mListView.setAdapter(adapter); 
} 
public void onClick(View v) 
{ 
    String input = mValue.getText().toString(); 
    if(input.length() > 0) 
    { 
     // add string to the adapter, not the listview 
     adapter.add(input); 
     // no need to call adapter.notifyDataSetChanged(); as it is done by the adapter.add() method 
    } 
} 

} 

Ошибки

The method setContentView(int) is undefined for the type TopRatedFragment 

The method findViewById(int) is undefined for the type TopRatedFragment 

The method setOnClickListener(View.OnClickListener) in the type View is not applicable for the arguments (TopRatedFragment) 

The method findViewById(int) is undefined for the type TopRatedFragment 

The constructor ArrayAdapter<String>(TopRatedFragment, int, ArrayList<String>) is undefined 

The method findViewById(int) is undefined for the type TopRatedFragment 

ответ

2

setContentView(R.layout.fragment_top_rated);

неправильно

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 

    View rootView = inflater.inflate(R.layout.fragment_top_rated, container, false); 
    mAdd = (Button)rootView.findViewById(R.id.newList); 
    mAdd.setOnClickListener(this); 
    mValue = (EditText)rootView.findViewById(R.id.listData); 
    adapter = new ArrayAdapter<String>(getActivity, android.R.layout.simple_expandable_list_item_1, list); 

// set the lv variable to your list in the xml 
    mListView=(ListView)rootView.findViewById(R.id.listView); 
    mListView.setAdapter(adapter); 
    return rootView;  
} 

Вам нужно раздувать вид в onCreateView и вернуть мнение,

Также вы используете завышенный объект вида инициализировать свои взгляды

The constructor ArrayAdapter<String>(TopRatedFragment, int, ArrayList<String>) is undefined 

Так изменится

adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_expandable_list_item_1, list); 

избавиться от кодов in onCreate

+0

Просто собираюсь протестировать это сейчас, надеюсь, это устранит проблему. –

+0

@BrianJ предложение правильное. также убедитесь, что у вас есть правильный импорт. это то, о чем я не упоминал. Остальное все должно быть хорошо – Raghunandan

+0

Да, сработало, может добавить еще несколько функций, например, если я выберу позицию, которую я могу удалить или ввести количество. –

0

Я работаю над той же проблемой. Я медленно преодолеваю эту проблему. Это может помочь вам решить проблемы с TodoListAdapter https://gitorious.org/acal/acal/source/a6ba5fbe340ae96c1078e1e8e330e1e317ba5620:src/com/morphoss/acal/activity/TodoListAdapter.java#L70

и с проблемами с ToDoManagerActivity. Crash after adding footer to ListView

В настоящее время я зарегистрирован в том же курсе, который вы взяли или принимаете. Это бесплатный курс, и каждый может зарегистрироваться. Никто не получает оценку для этого курса, предлагается расширить знания людей по темам, в данном случае Android. Просто посмотрите на курс.org. Я чувствую вашу боль, когда дело доходит до попытки получить хорошую помощь, и я также понимаю, откуда приходит помощник, когда он сказал, что не хочет делать вашу работу за вас.

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