簡體   English   中英

ListView的OnItemClick不起作用

[英]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.

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