2011-06-06 69 views
0

我有一個listview作爲mainLayout的一部分,Onviewkevent在列表視圖不工作。任何人都可以給我指出我錯在哪裏?包含列表視圖的佈局,無法切換到新的活動onitemclick

下面的代碼片段:

public class HostListActivity extends ListActivity { 

    public ArrayList<String> deviceList; 
    static LinearLayout mainLayout; 
    public ListView hostListView; 

    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     designLayout(); 
     setContentView(mainLayout); 
    } 

    public void designLayout() { 
     mainLayout = new LinearLayout(this); 
     mainLayout.setOrientation(LinearLayout.VERTICAL); 
     int lHeight= LinearLayout.LayoutParams.FILL_PARENT; 
     int lWidth = LinearLayout.LayoutParams.WRAP_CONTENT; 
     AddHostListView(lHeight,lWidth); 
    } 


    private void AddHostListView(int lHeight, int lWidth) { 
     deviceList = new ArrayList<String>(); 
     deviceList.add("abc"); 
     deviceList.add("efg");   
     deviceList.add("hij"); 

     hostListView = new ListView(this); 
     hostListView.setId(android.R.id.list); 

     hostListView.setAdapter(new ArrayAdapter<String>(this, 
       android.R.layout.simple_list_item_1, deviceList)); 

     hostListView.setOnItemClickListener(new OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> a, View v, int position, long id) { 

     Intent myIntent = new Intent(v.getContext(), DirBrowserActivity.class); 
      startActivity(myIntent); 

      } 

    }); 

    mainLayout.addView(hostListView, new LinearLayout.LayoutParams (lHeight,lWidth)); 

} 

// DirBrowserActivity類

公共類DirBrowserActivity延伸活動{

@Override 
protected void onCreate(Bundle savedInstanceState) {  
    super.onCreate(savedInstanceState); 
     TextView tv = new TextView(this); 
     tv.setText("Hello, DirBrowse View"); 
     setContentView(tv); 
} 

}

回答

1

您擴展了ListActivity,但不使用此類中的任何功能。我注意到這與不工作的OnItemClickListener相關。簡單地改變:

public class HostListActivity extends ListActivity { 

public class HostListActivity extends Activity {

會有所幫助。

+0

這工作。謝謝 – 2011-06-06 13:11:03

0

你應該把這個代碼

registerForContextMenu(getListView()); 

將適配器設置爲你的列表視圖後,如果你想添加一個上下文菜單到你的項目。如果你只是想在一個項目的點擊不便,需要ovverride這個方法:

@Override 
    protected void onListItemClick(ListView l, View v, int position, long id) { 
     super.onListItemClick(l, v, position, id); 
    } 

希望這有助於。