2017-02-16 27 views
-1

Что случилось с моим кодом? Это мой listView на фрагменте, чтобы отобразить базу данных. Успешно просмотреть базу данных, но ничего не происходит, когда я нажимаю.ListView во фрагменте ничего не происходит при нажатии

public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    db = new MyDatabase(getActivity()); 
    //View view = inflater.inflate(R.layout.fragment_event, container, false); 


    View rootView = inflater.inflate(R.layout.fragment_event, container, false); 

    //ArrayList<ListviewContactItem> listContact = GetlistContact(); 
    final ArrayList<event_constructor> arayList = new ArrayList<event_constructor>(); 
    //ListView lv = (ListView)getActivity().findViewById(R.id.lv_contact); 
    eventListView = (ListView) rootView.findViewById(android.R.id.list); 
    //lv.setAdapter(new ListviewContactAdapter(getActivity(), listContact)); 
    Log.d("EventNul", "Start"); 
    HashMap<String, String> map = new HashMap<String, String>(); 
    List<event_constructor> allEvents = db.getAllEvent(); 
    for (event_constructor event : allEvents) { 
     arayList.add(new event_constructor(event.getId(), event.getEventName())); 

    } 
    // Don't forget to close database connection 
    db.closeDB(); 

    ListAdapter eventAdapter = new ArrayListAdapter(getActivity(), arayList); 
    eventListView.setAdapter(eventAdapter); 
    eventListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, 
           int position, long id) { 
      // getting values from selected ListItem 
      String gid = ((TextView) view.findViewById(R.id.noId)).getText() 
        .toString(); 
      String gname = ((TextView) view.findViewById(R.id.event)).getText() 
        .toString(); 
      Log.d("EventId", gid +". "+ gname); 

      //Log.d("Item", ItemListId.toString()); 
      Intent intent = new Intent(getActivity(), NewPostActivity.class); 
      intent.putExtra("idEvent", gid); 
      startActivity(intent); 
     } 
    }); 
    return rootView; 

} 
+0

любое сообщение ('EventId') в журнале? –

+0

Log.d ("EventId", gid + "." + Gname); напечатан после ItemClick? – user2025187

+0

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

ответ

0

Спасибо за внимание Вахид, но я не нашел решение с этим. Теперь мое решение перемещает «setOnItemClickListener» в «onStart()». И это работа

@Override 
public void onStart() { 
    super.onStart(); 
    getListView().setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> av, View v, int pos, 
           long id) { 
      String gname = ((TextView) v.findViewById(R.id.event)).getText() 
        .toString(); 

      String gid = ((TextView) v.findViewById(R.id.noId)).getText() 
        .toString(); 
      Log.d("EventId", gid +". "+ gname); 

      Integer i = Integer.parseInt(gid); 
      Intent intent = new Intent(getActivity(), NewPostActivity.class); 
      intent.putExtra("idEvent",i); 
      startActivity(intent); 

     } 
    }); 
} 
0

Если какой-либо элемент строки списка содержит фокусируемое или интерактивное представление, то OnItemClickListener не будет работать.

Элемент строки должен иметь параметр как android: descendantFocusability = "blocksDescendants".

здесь вы можете увидеть пример, как выглядит ваш элемент списка. Ваш список элементов XML должен быть ... row_item.xml (your_xml_file.xml)

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:baselineAligned="false" 
android:descendantFocusability="blocksDescendants" 
android:gravity="center_vertical" > 

// your other widgets here 

</LinearLayout> 

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

  • Нет связанных вопросов^_^