[英]ListView's OnItemClick does not work
我做了一個列表視圖。 使用本教程鏈接效果很好。 但是問題是當我嘗試在其活動類中添加onitemclick偵聽器時,click動作不起作用。我只想顯示一個吐司消息,在這里它是onItemClickListener的代碼
listViewCity.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> a, View v, int position, long id) {
String item = ((TextView)v).getText().toString();
Toast.makeText(getApplicationContext(), item, Toast.LENGTH_LONG).show();
}
});
為什么它不起作用,任何人都可以告訴我???
如果您遇到異常或強制關閉,則應該提到它。
首先,您的OnItemClickListener是錯誤的,因為傳遞給OnClickListener的View不是TextView,因此您不能僅將其強制轉換為TextView。
您可以使用以下方法修復它:
listViewCity.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> a, View v, int position, long id) {
String item = ((TextView)v.findViewById(R.id.cityName)).getText().toString();
Toast.makeText(getApplicationContext(), item, Toast.LENGTH_LONG).show();
}
});
試試我剛剛做的事,它應該可以工作。 如果它不起作用,則可能需要從xml文件中刪除行android:autoLink="web"
。
屬性android:autoLink="web"
使視圖的TextView可點擊。 正如我在評論中提到的那樣,如果您的任何子視圖都是可單擊的,則您的OnItemClickListener將不會接收事件,因為它將由子級使用。
用這個
由於您使用的是customadapter,因此必須在customadapter類中執行此操作,以處理列表視圖的onclicks ...
convertView.setClickable(true);
convertView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View paramView)
{
//if you want you can use the "position" value to get the desired row items.
}
});
嘗試這個...
listViewCity.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> a, View v, int position, long id) {
String item = listViewCity.getItemAtPosition(position).toString();
Toast.makeText(getApplicationContext(), item, Toast.LENGTH_LONG).show();
}
});
我遇到了同樣的問題,並通過將需要單擊的每個視圖設置為可單擊,然后添加了偵聽器來解決了該問題。 我將以下方法放入自定義適配器中(在getView方法中)。 像這樣:
public void setViewsClickable(int position) {
myView.button.setClickable(true);
myView.radioButton.setClickable(true);
myView.button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// what this button should do
}
});
myView.radioButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// what clicking this radio button should do
}
});
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.