[英]android how do i find out which view was clicked in a listview
我對android和java相當陌生。 我創建了自己的適配器和listView,我想知道如何找出在listView中按下了哪個視圖或行,這樣我就可以為拾取行執行特定任務(任務包括將數據和信息發送到另一個活動)。
我以為也許position變量包含單擊的行的名稱,所以我嘗試了一下,但是當單擊行時,應用程序崩潰
hangarList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
Toast.makeText(getApplicationContext(), position,Toast.LENGTH_SHORT);
}
});
有人可以幫忙嗎
可能是位置是整數,並且需要一個字符串,並且還需要在烤面包上調用show()才能看到消息。
hangarList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
Toast.makeText(getApplicationContext(), position+"",Toast.LENGTH_SHORT).show();
}
});
首先,您在尋找被單擊的行方面是正確的。
錯誤在於您使用Toast.makeText()
。 該方法有兩種版本:
makeText(Context context, int resId, int duration)
makeText(Context context, CharSequence text, int duration)
現在在您的視頻中,您執行Toast.makeText(..., position, ...)
,該方法調用方法的第一個版本(因為position
是整數),但是由於position
不是資源ID,因此應用程序崩潰。
因此,您必須使用第二個版本並執行此操作,將CharSequence
(或String)作為第二個參數Toast.makeText(..., position+"", ...)
: Toast.makeText(..., position+"", ...)
順便說一句。 要獲取該行的實際值,可以使用hangarList.getItemAtPosition(position)
。
組成ListView
中行的視圖的索引就像數組一樣。 位置值是被按下的行或視圖的索引。 您可以使用位置值來查找與單擊的視圖關聯的信息。
您的應用程序崩潰,因為Toast.makeText(Context, int, int)
的第二個參數期望使用字符串資源ID整數。 當您將其位置指定為id時,它將找不到該字符串資源並引發異常。 要顯示單擊的視圖的索引,請嘗試:
hangarList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
Toast.makeText(getApplicationContext(),
"View at position " + position + " clicked.",
Toast.LENGTH_SHORT);
}
}
應用程序因您的Toast而崩潰。您應該像使用Toast
Toast.makeText(context, text, duration).show();
您可以像這樣簡單地修復它:
String positionString=Integer.toString(position);
Toast.makeText(getApplicationContext(), positionString,Toast.LENGTH_SHORT).show();
沒有Toast也沒有問題。正如您所說的,單擊列表視圖的哪一項? 為了控制單擊哪個項目,可以使用方法的位置變量。 問候.. Omer
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.