2010-09-23 75 views
0

我有一個ListView和一個Tabactivity內的ExpandableListView。我已經重寫了ListView的setOnItemClickListener。我有2個選項卡,一個使用ListView,另一個使用ExpandableListView。出於某種原因,我無法點擊第一個ListView中的任何項目。如果我將選項卡更改爲ExpandableListView,然後返回到第一個選項卡,它將允許我照常點擊項目。任何想法,爲什麼發生這種情況。有一些奇怪的焦點事情嗎?ListView OnClickListener不能在TabActivity內工作

我這是我的代碼部分:

public void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 
    setContentView(R.layout.listview); 

    listView = (ListView) findViewById(R.id.listview); 

    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
       @Override 
       public void onItemClick(AdapterView<?> av, View v, int pos, long id) { 
        onListItemClick(pos, id); 
        // return false; 
       } 
      }); 
} 

回答

1

我有現在同樣的問題。如果我找到解決方案,我會發布解決方案。

不是我正在尋找的解決方案...但這裏是在過渡期間的工作。

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    //lv is a reference to my ListView. 
    lv.setSelection(position); 

    return convertView; 
} 

讓我注意,這不是一個理想的解決方案,它只是東西,似乎在Android版本> 1.5工作始終。 (這是我測試的)。

另外還有一點需要注意的是,您還使用onItemClickListener,它通常只會響應模擬器上軌跡球或箭頭鍵的使用。這可能會導致您無法處理onClick事件。我用一個典型的

0

我剛剛有同樣的問題。一些由TabActivity調度的ListViews。 我無法設置正確的OnItemClickListener,所以我在適配器中將OnClickListener「手動」連接到convertView。 它只是在每個單元格附加一個OnClickListener。

就像這樣:

convertView.setOnClickListener(new OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     // What you want to do with this "item click" 
     // make an Intent to start something else or whatever 
    } 
}); 

當然,這樣做的適配器方法(如返回convertView前):

public View getView(int position, View convertView, ViewGroup parent) 

,在我的情況下工作,所以我希望它能幫助你出去。

好運

+0

OH中,如果你需要在列表中的項目的位置,只需將它設置爲你的convertView一個標籤,這樣你會得到它回來在onclick方法的方式。 – MrBuBBLs 2011-01-25 14:21:12