2013-08-30 75 views
0

當我使用自定義列表陣列適配器作爲列表視圖時,數據顯示在列表中但不可點擊。我已經在列表視圖項目點擊上設置了一個監聽器,但它不起作用。自定義列表陣列適配器不可點擊

此外,我發現另一種解決方案,使行可點擊並設置在線性佈局列表視圖項目佈局上繪製背景,但使用此解決方案是一個壞習慣。

有沒有其他解決方案呢?

任何機構能告訴我爲什麼會發生這種情況?在這不定製陣列適配器工作的默認功能列表視圖

這裏是我的代碼:

public class Model { 
    String name; 
    String id; 
    String price; 
} 

mArrayList = new ArrayList<Model>(); 
// mArrayList has some data in it 

mListiView.setsetAdapter(new myCoustomAdapter(mContext, mArrayList)); 
mListiView.setOnItemClickListener(new OnItemClickListener() { 
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
     Toast.makeText(getBaseContext(), ""+position, Toast.LENGTH_LONG).show(); 
    } 
}); 

public class myCoustomAdapter extends ArrayAdapter<Model> { 
    ArrayList<Model> mList; 

    public myCoustomAdapter(Context context, ArrayList<Model> list) { 
     super(context, R.layout.item); 
     this.mList=list; 
    } 

    @Override 
    public int getCount() { 
     return this.mList.size(); 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     // layout data here 
     return view; 
    } 
} 

什麼也沒有發生在項目點擊。

+0

發表您的自定義適配器代碼,並且佈局XML。 – bgse

回答

2

這裏要注意的第一件事是,無論何時ListView元素中存在按鈕或ImageButton等可點擊元素,它們都會控制點擊事件。所以你的ListView將不會有機會接受點擊事件。

你只需要做的就是將你的ListView中的Button或ImageButton的focusable屬性設置爲false。但他們仍然可以毫無問題地工作,而且你的ListView的onListItemClick也可以工作。

試試這個,

<Button android:id="@+id/textsize_increaser" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_toRightOf="@+id/back_button" 
    android:focusable="false" 
    android:text=" A + "/> 

這裏我已經加入這個機器人:可聚焦= 「假」,它工作正常。嘗試一下。

這裏是鏈接參考 Click is not working on the Listitem Listview android

+0

@Ricky ...謝謝 –

0

很可能您的列表視圖行的佈局包含可點擊的元素,這是「竊取」您的點擊次數。

+0

那麼你對這個問題提出的解決方案是什麼 –

+0

查看你的行的佈局。確保你沒有可點擊的元素,可以竊取點擊。修復佈局。或更改您的適配器並將onClickListener分配給行視圖或某些視圖的元素 –

相關問題