我有一個ListView與每行中的一些項目。其中一個項目是ImageView可點擊。我創建了一個單獨的Adapter類來創建ListView並用所有項目填充它。如何在ImageView中設置ListView中的OnClickListener?
在我的活動,我設置適配器,如下圖所示:
//myScenesArray is the array of items I want to fill in the Adapter
ListView listView = (ListView) findViewById(R.id.sceneslistview);
ListViewScenesAdapter customListAdapter = new ListViewScenesAdapter(this.getBaseContext(), R.layout.scenesrow, myScenesArray);
listView.setAdapter(customListAdapter);
我可以創建監聽到的每一行,如下:
listView.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v, int position, long id){
//here I put what I want to do when Listener is activated
});
但我怎麼能建立一個監聽器行內的物品?
我只訪問我行的項目適配器裏面......你看我的適配器的)下面的代碼,該方法getView(當我填寫的所有元素:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
Log.i("ADAPTER DE CENAS","ENTROU NO getView()!!!");
LayoutInflater inflater = (LayoutInflater)
context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View row = inflater.inflate(layoutResourceId, parent, false);
ImageView left = (ImageView)row.findViewById(R.id.left);
left.setImageBitmap((data.get(position)).getVisualImage());
TextView middle = (TextView)row.findViewById(R.id.text);
middle.setText((data.get(position)).getVisualName());
View right = row.findViewById(R.id.right);
right.setTag(position);
return row;
}
我可以訪問我的Activity中每行的元素?
我想在每行中設置一個Listener到視圖右側(R.id.right)。我感謝任何幫助。
更新
我已經有上下文作爲我的Adapter類的變量。我將張貼適配器類的開頭:
public class ListViewScenesAdapter extends ArrayAdapter<Scene> {
Context context;
int layoutResourceId;
ArrayList<Scene> data = new ArrayList<Scene>();
public ListViewScenesAdapter(Context context, int layoutResourceId, ArrayList<Scene> data) {
super(context, layoutResourceId, data);
Log.i("ADAPTER DE CENAS","ENTROU NO CONSTRUTOR!!!");
this.layoutResourceId = layoutResourceId;
this.context = context;
this.data = data;
}
適配器類具有上述的構造,已經提到的getView方法和變量:背景下,layoutResourceId和數據。
但是我不知道如何在Adapter類中做一個Listener。任何人都可以幫助我嗎?
兩個ayorhan和四面楚歌的斯格回答正確,我認爲同樣的時間,只有在編輯不同。兩者都很好,但是當我訪問變量POSITION(知道我點擊的列表的當前位置)時,它顯示一個錯誤。我怎樣才能得到這個項目在偵聽器中的位置? –
如果你們其中一個人都幫我發現,我會將其標記爲最終的正確答案。並感謝我的一切幫助! –
@ayorhan看到這個 –