![](/img/trans.png)
[英]Passing an object of MainActivity through View.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.