簡體   English   中英

Android如何找出列表視圖中單擊了哪個視圖

[英]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() 該方法有兩種版本:

  1. makeText(Context context, int resId, int duration)
  2. 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM