Adapter内的onItemClick监听器四个arg参数

onItemClick(AdapterView<?> parent, View view, int position, long id)

举个例子你会理解的更快:X, Y两个listview,X里有1,2,3,4这4个item,Y里有a,b,c,d这4个item。

 如果你点了b这个item。如下:

parent-----相当于listview Y适配器的一个指针,可以通过它来获得Y里装着的一切东西,再通俗点就是说告诉你,你点的是Y,不是X。

view-----是你点b item的view的句柄,就是你可以用这个view,来获得b里的控件的id后操作控件

position------是b在Y适配器里的位置(生成listview时,适配器一个一个的做item,然后把他们按顺序排好队,在放到listview里,意思就是这个b是第position号做好的)

id-----是b在listview Y里的第几行的位置(很明显是第2行),大部分时候position和id的值是一样的,如果需要的话,你可以自己加个log把position和id都弄出来在logcat里瞅瞅,看了之后心里才踏实。


原文:http://blog.sina.com.cn/s/blog_618199e60101071l.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要隐藏RecyclerView中的特定项,可以使用RecyclerView的Adapter中的getItemViewType方法来指定不需要显示的项的视图类型。然后,在RecyclerView的LayoutManager中使用setSpanSizeLookup方法来设置每个项的跨度大小,并在这个方法中根据视图类型返回相应的跨度大小。这将导致那些需要隐藏的项不会被显示出来,因为它们的跨度大小为0。 以下是一个示例代码,展示如何在网格布局中隐藏特定的项: ``` public class MyAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { private List<MyItem> items; private int numColumns; public MyAdapter(List<MyItem> items, int numColumns) { this.items = items; this.numColumns = numColumns; } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { // Create and return the appropriate view holder for the given view type } @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { // Bind the data to the view holder } @Override public int getItemCount() { return items.size(); } @Override public int getItemViewType(int position) { if (shouldHideItem(position)) { // Return a unique view type for the hidden item return R.layout.hidden_item; } else { // Return the normal view type for the non-hidden items return R.layout.normal_item; } } private boolean shouldHideItem(int position) { // Determine if the item at the given position should be hidden // For example, based on some condition or data in the item object return items.get(position).isHidden(); } public void hideItem(int position) { // Update the item object to indicate that it should be hidden items.get(position).setHidden(true); // Notify the adapter that the data set has changed notifyDataSetChanged(); } public void showItem(int position) { // Update the item object to indicate that it should be shown items.get(position).setHidden(false); // Notify the adapter that the data set has changed notifyDataSetChanged(); } public static class GridLayoutManagerWithHiddenItems extends GridLayoutManager { private MyAdapter adapter; public GridLayoutManagerWithHiddenItems(Context context, int spanCount, MyAdapter adapter) { super(context, spanCount); this.adapter = adapter; } @Override public SpanSizeLookup getSpanSizeLookup() { return new SpanSizeLookup() { @Override public int getSpanSize(int position) { if (adapter.getItemViewType(position) == R.layout.hidden_item) { // Return 0 for hidden items return 0; } else { // Return the normal span size for non-hidden items return 1; } } }; } } } ``` 在这个示例中,MyAdapter类是RecyclerView的Adapter,它包含一个getItemViewType方法来确定每个项的视图类型。如果shouldHideItem方法返回true,则该项的视图类型将设置为R.layout.hidden_item,否则为R.layout.normal_item。GridLayoutManagerWithHiddenItems类是RecyclerView的LayoutManager,它扩展了GridLayoutManager,并在getSpanSizeLookup方法中使用getItemViewType方法返回的视图类型来设置每个项的跨度大小。如果视图类型为R.layout.hidden_item,则跨度大小为0,否则为1。 要隐藏特定的项,可以调用MyAdapter中的hideItem方法,并传递该项的位置。这将更新相应的MyItem对象并通知适配器数据集已更改。要显示已隐藏的项,可以调用MyAdapter中的showItem方法,并传递该项的位置。这将更新相应的MyItem对象并通知适配器数据集已更改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值