2017-02-16 7 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

사용자 지정보기가 목록보기 항목으로 있습니까? 그렇다면이 문제가 발생할 수 있습니다. 귀하의 사용자 정의보기 코드를 게시하고 난 당신에게 workarount 줄 수 –

답변

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> 
관련 문제