2014-08-28 1 views
1

Итак, я сейчас перемещаю свой код, который работал во всей среде действий, в ту, которая использует один или два действия плюс кучу фрагментов. У меня возникли проблемы с этим сейчас. Я пытаюсь преобразовать активность, которая берет кучу текстовых объектов JSON из Интернета, сохраняет их в локальной базе данных SQLite и затем запрашивает их и помещает в ListView. Не слишком сложно было переносить данные JSON SQLite, но у меня проблемы с просмотром списка ... особенно в строке findViewById, где он «не может найти символ« список »Ошибка, связанная с просмотром списка фрагментов, не удается найти символ «список»

Вот мой onCreateView код:

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    View view = inflater.inflate(R.layout.fragment_event, container, false); 

    dbHelper.open(); 
    Cursor cursor = dbHelper.fetchAllTestObjects(); 
    dbHelper.close(); 

    // The desired columns to be bound 
    String[] columns = new String[]{ 
      SQLiteDbAdapter.test_object_id, 
    }; 

    // the XML defined views which the data will be bound to 
    int[] to = new int[]{ 
      R.id.test_object_id, 
    }; 

    // create the adapter using the cursor pointing to the desired data 
    //as well as the layout information 
    SimpleCursorAdapter dataAdapter = new SimpleCursorAdapter(
      getActivity(), R.layout.home_test_objects_info, 
      cursor, 
      columns, 
      to, 
      0); 

    listView = (ListView) view.findViewById(R.id.list); 
    // Assign adapter to ListView 
    listView.setAdapter(dataAdapter); 


    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> listView, View view, 
           int position, long id) { 
      // Get the cursor, positioned to the corresponding row in the result set 
      Cursor cursor = (Cursor) listView.getItemAtPosition(position); 

      int testObjectId = cursor.getInt(cursor.getColumnIndexOrThrow(SQLiteDbAdapter.test_object_id)); 
      DynamoDBManager.CoreInfo listCore = new DynamoDBManager.CoreInfo(testObjectId, "", ""); 
      // Do action based on listCore 
     } 
    }); 

    return view; 
} 

для моего fragment_event_list.xml у меня есть:

<?xml version="1.0" encoding="utf-8"?> 
<FrameLayout 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" 
    tools:context="com.example.android.navigationdrawerexample.EventFragment">  

    <ListView 
     android:id="@android:id/list" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" /> 

</FrameLayout> 

И для настройки объекта для объектов, которые будут заселить ListView, home_events_info.xml которые будут иметь другие элементы TextView в нем в некоторый момент:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/eventsRelLayout" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:orientation="vertical" 
    android:padding="6dip"> 

    <TextView 
     android:id="@+id/test_object_id" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="TextView" /> 

</RelativeLayout> 

Основные различия между моим кодом активности, и это то, что я использовал (List) шаблон Fragment и автоматически назван идентификатор для fragment_event_list.xml в списке вместо ListView1, который я имел в своем activity_home.xml и не использует LinearLayout, но FrameLayout.

activity_home.xml:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical"> 

    <ListView 
     android:id="@+id/listView1" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" /> 

</LinearLayout> 

Я представляю себе объяснить эти различия в моей нынешней проблеме, как фрагмент и FrameLayout работают иначе, чем активность и LinearLayout, но я не знаю, как/почему и как исправить ошибку ,

ответ

2

Я думаю, что ваш атрибут Идентификатор Listview не правильно установлен на XML

Изменение: андроид: идентификатор = "@ андроид: идентификатор/список"

Для: андроида: ид = "@ + ид/список "

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