2011-08-01 214 views
3

我有一個由TextView,ImageView,ImageButton組成的列表視圖和自定義佈局。我希望我的圖像按鈕的行爲與RadioButton類似。但是我的onListItemClick事件沒有被調用。onListItemClick不會在android中調用嗎?

public class MyListAdapter extends BaseAdapter { 

    Context context; 
    ArrayList<String> text; 
    ArrayList<String> Count; 

    int count; 

    public MyListAdapter(Context ctx, ArrayList<String> text, ArrayList<String> Count) { 
     this.context = ctx; 
     this.textAnswers = text; 
     this.optionCount = Count; 
    } 

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

    @Override 
    public Object getItem(int position) { 
     return position; 
    } 

    @Override 
    public long getItemId(int position) { 
     return position; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 

     if(convertView == null) { 
      convertView = LayoutInflater.from(context).inflate(R.layout.custom_layout, null); 
     } 

     ImageButton choice = (ImageButton)convertView.findViewById(R.id.ImageButton); 
     if(imageChoice != null) { 
      choice.setImageResource(R.drawable.radio_unselected); 

     } 

     TextView txt = (TextView)convertView.findViewById(R.id.TextView); 
     txt.setText(Count.get(position)); 

     TextView txtText = (TextView)convertView.findViewById(R.id.TextViewAnswer); 
     txtText.setText(textAnswers.get(position)); 

     return convertView; 
    } 
} 

而且我onListItemClick如,

@Override 
protected void onListItemClick(ListView listView, View v, int position, long id) { 
    super.onListItemClick(listView, v, position, id); 
    ImageButton choice = (ImageButton)v.findViewById(R.id.ImageButton); 
    choice.setImageResource(R.drawable.radio_selected); 
} 

現在PLZ任何一個可以幫助給我的ImageButton像單選按鈕的行爲。我錯過的最重要的是我的onListItemClick沒有被調用。 另外我已經設置了我的custom_layout上所有控件的android:focusable =「false」android:focusableInTouchMode =「false」android:clickable =「false」。 在此先感謝。

+0

你調用了'setOnItemClickListener'嗎? – MByD

+0

@MByD不,我沒有叫setOnItemClickListener ..我必須嗎? – Panache

+1

是的,你需要將它設置爲監聽器,否則,它將如何被調用? – MByD

回答

2

您需要在主活動中向您的ListView添加一個setOnItemClickListener,如果不這樣做,您將永遠不會收到對itemClick的調用。

例如:

onCreate()方法:

ListView lv = (ListView) findViewById(R.id.listview1); 

lv.setOnItemClickListener(this); 

//創建下面的方法,讓活動實施onitemclicklistener

public void onItemClick(AdapterView<?> a, View v, int position, long id) { 
//set action here 
} 

應該工作:)

2

如果你的活動是一個ListActivity,並且你的列表視圖有id = @android:id/l ist比你的onListItemClick將被調用,而你不必設置監聽器。

+0

是的,因爲我有另一個活動與簡單的適配器在這裏我的onListItemClick被調用的另一個列表。但爲什麼它沒有被BaseAdapter調用列表? – Panache

+0

如果從我的自定義佈局中刪除圖像按鈕,則會調用onListItemClick。現在我失蹤的imagebutton? – Panache

0

在ImageButton的XML中設置這些值,那麼它應該工作。

android:focusable="false" 
android:focusableInTouchMode="false" 
+1

它根本沒有工作 –

1

您可能需要在列表項目視圖中設置android:descendantFocusability="blocksDescendants"。這爲我解決了它。

... 
<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:descendantFocusability="blocksDescendants"> 
... 
相關問題