簡體   English   中英

視圖對象不可點擊-使用OnClickListener

[英]View object not clickable - using OnClickListener

我創建了一個名為ListItem的基本類,該類僅存儲兩個String和一個整數。

這是我存放在RecyclerView中的物品的容器。

我試圖使ListItems可單擊,所以我使ListItem擴展了View類。 然后添加一個OnClickListener並進行設置。 它沒有用。 我通過使用TOAST創建一條短消息進行了測試,但未顯示任何內容。 有誰知道為什么嗎?

ListItem類:

  public ListItem(String title, String date, int url, Context context, AttributeSet attrs){
    super(context, attrs);
    this.title = title;
    this.date = date;
    this.url = url;
}

...創建ListItems的類.....

    private AttributeSet attrs;


  ListItem y = new ListItem(title, date, a, this.getContext(), attrs);


    View.OnClickListener mFan = new View.OnClickListener()
    {

        public void onClick(View v)
        {
            Toast.makeText(getActivity(), "TEST" , Toast.LENGTH_SHORT).show();

        }

    };

    y.setOnClickListener(mFan);

View類中有一個用於此的方法。

y.setClickable(true);

您可能還需要對ListView執行此操作。

myListView.setClickable(真);

在RecyclerView中實現項目單擊偵聽器有點不同。

我假設您已經實現了自己的自定義RecyclerViewAdpater,應該像這樣。 您必須在其中實現自己的OnClickListener接口。

public class CustomRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {

    private List<ListItem> listItems;

    private static OnListItemClickListener onListItemClickListener;

    public interface OnListItemClickListener {

        public void onListItemClick(int position, View v);

    }

    public void setOnListItemClickListener(OnListItemClickListener onListItemClickListener) {

        this.onListItemClickListener = onListItemClickListener;

    }

    // You implement OnClickListener in your list item view holder.
    public static class ListItemViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {

        public ListItemViewHolder(View listItemView) {

            super(listItemView);

            listItemView.setOnClickListener(this);

        }

        @Override
        public void onClick(View view) {

            onListItemClickListener.onListItemClick(getAdapterPosition(), view);

        }

    }

}

然后,在您的主要活動或片段中,您將執行以下操作。

recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));

CustomRecyclerViewAdapter customRecyclerViewAdapter = new CustomRecyclerViewAdapter(listItems);

recyclerView.setAdapter(customRecyclerViewAdapter);

customRecyclerViewAdapter.setOnListItemClickListener(new CustomRecyclerViewAdapter.OnListItemClickListener() {

    @Override
    public void onListItemClick(int position, View v) {

        Toast.makeText(getActivity(), "TEST" , Toast.LENGTH_SHORT).show();

    }

});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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