2013-05-06 34 views
0

我正在開發第一個android應用程序,我有一個片段類,它擴展了SherlockListFragment。當我在onCreateView中設置setOnItemClickListener並執行onItemClick當我點擊一行(列表)時,我沒有收到任何迴應。列表顯示正確在我的應用程序。我想要當用戶點擊行表格listview我的另一個活動會打電話。我瞪了很多眼睛,但沒有得到正確的答案。 我不明白問題在哪裏。任何人都可以告訴我在下面的代碼中我做錯了什麼?setOnItemClickListener未在onCreatView方法中調用?

以下是我的代碼

public class ResidentialFragActivity extends SherlockListFragment { 

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

    View view = inflater.inflate(R.layout.project_list,container, false); 
    resListviewId = (ListView)view.findViewById(android.R.id.list); 
    linearProgress = (LinearLayout)view.findViewById(R.id.linlaHeaderProgress); 
    projectList = new ArrayList<HashMap<String,String>>(); 

    new LoadProjects().execute(); 
    resListviewId.setOnItemClickListener(new android.widget.AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> arg0, View view, int arg2, 
       long arg3) { 
      Intent href = new Intent(getSherlockActivity(), ProjectDetailActivity.class); 

      // send project id to project detail activity to get list of Phases under that project 
      String proj_id = ((TextView) view.findViewById(R.id.projectId)).getText().toString(); 

      href.putExtra("proj_id", proj_id);  
      getSherlockActivity().startActivity(href); 
     } 
    }); 
    return view; 
} 


//inner class for network operation 
private class LoadProjects extends AsyncTask<String, String, String> { 

    protected void onPreExecute() { 
     linearProgress.setVisibility(View.VISIBLE); 
    } 

    @Override 
    protected String doInBackground(String... params) { 

     //call webservice 
    } 

    @Override 
    protected void onPostExecute(String result) { 
     linearProgress.setVisibility(View.GONE); 

     ListAdapter projAdapter = new SimpleAdapter(getSherlockActivity(), 
       projectList, R.layout.project_list_item, 
       new String[] {PROJ_ID,PROJ_NAME,EDIT_RIGHTS}, new int[] 
         {R.id.projectId,R.id.projectName,R.id.projectSubName}); 
     //updating the UI 
     setListAdapter(projAdapter); 
    } 
     } 
} 

以下是佈局列表視圖

<?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:layout_marginTop="10dp" 
    android:background="@color/White" 
    android:orientation="vertical" > 

    <ListView 
     android:id="@android:id/list" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_marginLeft="1dp" 
     android:divider="@drawable/divider" 
     android:focusableInTouchMode="true"  
     android:smoothScrollbar="true" 
     android:dividerHeight="1.5dp" 
     android:scrollbarThumbVertical="@drawable/divider" 
     android:drawSelectorOnTop="false" 
     android:listSelector="@drawable/list_selector"> 
    </ListView> 

</LinearLayout> 

在此先感謝..

+0

你能嘗試添加機器人:點擊=「true」以你的ListView – wrecker 2013-05-06 09:50:49

+0

仍然沒有BugraOral – 2013-05-06 09:53:14

回答

1

,你應該重寫onListItemClick,而不是代替resListviewId.setOnItemClickListener ..作爲您正在將適配器設置爲默認值setListAdapter(projAdapter);

@Override 
public void onListItemClick(ListView l, View v, int position, long id) { 
     Intent href = new Intent(getSherlockActivity(), ProjectDetailActivity.class); 

     // send project id to project detail activity to get list of Phases under that project 
     String proj_id = ((TextView) view.findViewById(R.id.projectId)).getText().toString(); 

     href.putExtra("proj_id", proj_id);  
     startActivity(href); 
} 
+0

我已經使用getListView()setOnItemClickListener但遇到異常.. – 2013-05-06 09:54:32

+0

什麼是例外 – Nermeen 2013-05-06 09:55:13

+0

異常喜歡了java.lang.RuntimeException。 :無法啓動活動ComponentInfo {com.ojaswitech.bookinscape/com.ojaswitech.bookingscape.ProjectFragActivity}:java.lang.IllegalStateException:內容視圖尚未創建 at android.support.v4.app.ListFragment.ensureList(ListFragment.java :328) E/AndroidRuntime(455):在android.support.v4.app.ListFragment.getListView(ListFragment.java:222) – 2013-05-06 09:59:33