2017-02-16 7 views
-1

私のコードに何が間違っていますか?私の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)あなたの注意Waheedため

<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> 
関連する問題