Android Listview使用BaseSwipeAdapter返回错误的位置

Android Listview使用BaseSwipeAdapter返回错误的位置,android,Android,我正在使用带有swipelayout(daimajia library)的listview,我的listview正在滚动。。。 我的问题是,当我滑动listview项并单击其中的按钮时,它会返回错误的位置。。 你知道怎么解决这个问题吗 这是我的适配器 我认为您的getView方法的实现是混乱的。试试这个 ListAdapter Java类 package com.dev4solutions.myapplication.activities; import android.content.Con

我正在使用带有swipelayout(daimajia library)的listview,我的listview正在滚动。。。 我的问题是,当我滑动listview项并单击其中的按钮时,它会返回错误的位置。。 你知道怎么解决这个问题吗

这是我的适配器


我认为您的getView方法的实现是混乱的。试试这个

ListAdapter Java类

package com.dev4solutions.myapplication.activities;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
import android.widget.Toast;

import com.daimajia.swipe.SimpleSwipeListener;
import com.daimajia.swipe.SwipeLayout;
import com.dev4solutions.myapplication.R;

import java.util.ArrayList;

class ListAdapter extends BaseAdapter {
    private ArrayList<String> strings;
    private Context mContext;

    public ListAdapter(Context context, ArrayList<String> list) {
        strings = list;
        mContext = context;
    }

    @Override
    public int getCount() {
        return strings.size();
    }

    @Override
    public Object getItem(int i) {
        return strings.get(i);
    }

    @Override
    public long getItemId(int i) {
        return i;
    }

    @Override
    public View getView(final int position, View view, ViewGroup viewGroup) {
        ViewHolder viewHolder = null;
        if (view == null) {
            view = LayoutInflater.from(mContext).inflate(R.layout.ledger_layout, null);

            viewHolder = new ViewHolder();
            viewHolder.swipeLayout = view.findViewById(R.id.swipe);
            viewHolder.textView = view.findViewById(R.id.text_data);
            viewHolder.delete = view.findViewById(R.id.delete);

            view.setTag(viewHolder);

        } else {
            viewHolder = (ViewHolder) view.getTag();
        }

        viewHolder.textView.setText(String.valueOf("Swipe Layout : " + position));

        viewHolder.swipeLayout.addSwipeListener(new SimpleSwipeListener() {
            @Override
            public void onOpen(SwipeLayout layout) {
                Toast.makeText(mContext, "onOpen : " + position,
                        Toast.LENGTH_SHORT).show();
            }
        });
        viewHolder.swipeLayout.setOnDoubleClickListener(new SwipeLayout.DoubleClickListener() {
            @Override
            public void onDoubleClick(SwipeLayout layout, boolean surface) {
                Toast.makeText(mContext, "DoubleClick : " + position,
                        Toast.LENGTH_SHORT).show();
            }
        });

        viewHolder.swipeLayout.setOnDoubleClickListener(new SwipeLayout.DoubleClickListener() {
            @Override
            public void onDoubleClick(SwipeLayout layout, boolean surface) {
                Toast.makeText(mContext, "DoubleClick : " + position,
                        Toast.LENGTH_SHORT).show();
            }
        });

        viewHolder.delete.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Toast.makeText(mContext, "onDelete Click : " + position,
                        Toast.LENGTH_SHORT).show();
            }
        });

        return view;
    }


    // view holder for managing to recycle of view
    public static class ViewHolder {
        SwipeLayout swipeLayout;
        TextView textView;
        View delete;
    }
}
package com.dev4solutions.myapplication.activities;
导入android.content.Context;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.BaseAdapter;
导入android.widget.TextView;
导入android.widget.Toast;
导入com.daimajia.swipe.SimpleSwipeListener;
导入com.daimajia.swipe.SwipeLayout;
导入com.dev4solutions.myapplication.R;
导入java.util.ArrayList;
类ListAdapter扩展了BaseAdapter{
私有数组列表字符串;
私有上下文;
公共ListAdapter(上下文上下文,ArrayList列表){
字符串=列表;
mContext=上下文;
}
@凌驾
public int getCount(){
返回strings.size();
}
@凌驾
公共对象getItem(int i){
返回字符串。get(i);
}
@凌驾
公共长getItemId(int i){
返回i;
}
@凌驾
公共视图getView(最终整数位置、视图视图、视图组视图组){
ViewHolder ViewHolder=null;
如果(视图==null){
view=LayoutFlater.from(mContext)。充气(R.layout.ledger\u布局,空);
viewHolder=新的viewHolder();
viewHolder.swipeLayout=view.findViewById(R.id.swipe);
viewHolder.textView=view.findViewById(R.id.text\u数据);
viewHolder.delete=view.findViewById(R.id.delete);
view.setTag(viewHolder);
}否则{
viewHolder=(viewHolder)view.getTag();
}
viewHolder.textView.setText(String.valueOf(“滑动布局:”+position));
viewHolder.swipeLayout.addSwipeListener(新的SimpleSwipeListener()){
@凌驾
公共空间开放(SwipeLayout布局){
Toast.makeText(mContext,“onOpen:+位置,
吐司。长度(短)。show();
}
});
viewHolder.swipeLayout.setOnDoubleClickListener(新swipeLayout.DoubleClickListener(){
@凌驾
公共空心双单击(SwipeLayout布局,布尔曲面){
Toast.makeText(mContext,“双击:”+位置,
吐司。长度(短)。show();
}
});
viewHolder.swipeLayout.setOnDoubleClickListener(新swipeLayout.DoubleClickListener(){
@凌驾
公共空心双单击(SwipeLayout布局,布尔曲面){
Toast.makeText(mContext,“双击:”+位置,
吐司。长度(短)。show();
}
});
viewHolder.delete.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
Toast.makeText(mContext,“onDelete”单击“+位置,
吐司。长度(短)。show();
}
});
返回视图;
}
//视图持有者,用于管理视图的回收
公共静态类视图持有者{
泳道布置泳道布置;
文本视图文本视图;
视图删除;
}
}
ledger_layout.xml:

<?xml version="1.0" encoding="utf-8"?>
<com.daimajia.swipe.SwipeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:swipe="http://schemas.android.com/apk/res-auto"
    android:id="@+id/swipe"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    swipe:leftEdgeSwipeOffset="0dp"
    swipe:rightEdgeSwipeOffset="0dp">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="80dp"
        android:background="#FF5534"
        android:gravity="center"
        android:tag="Bottom3"
        android:weightSum="10">

        <ImageView
            android:id="@+id/trash"
            android:layout_width="27dp"
            android:layout_height="30dp"
            android:layout_weight="1"
            android:src="@android:drawable/ic_delete" />

        <TextView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="5"
            android:text="Delete Item?"
            android:textColor="#fff"
            android:textSize="17sp" />

        <Button
            android:id="@+id/delete"
            android:layout_width="0dp"
            android:layout_height="40dp"
            android:layout_weight="4"
            android:background="#ffffff"
            android:text="Yes,Delete"
            android:textColor="#FF5534" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#cac6c6"
        android:padding="10dp">

        <TextView
            android:id="@+id/position"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />

        <TextView
            android:id="@+id/text_data"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:gravity="center"
            android:tag="Hover"
            android:text="Do not, for one repulse, forgo the purpose that you resolved to effort. " />
    </LinearLayout>
</com.daimajia.swipe.SwipeLayout>

使用标记为答案的方法将起作用,但还有另一种方法

适配器类

公共类testadapter1扩展了RecyclerSwipeAdapter{
公共静态最终字符串标记=testadapter1.class.getSimpleName();
专用静态SwiplayOutliner SwiplayOutliner;
私有静态ClickListener ClickListener;
字符串[]时间;
动画幻灯片;
布尔动画标志=真;
private int lastVisibleItem,totalItemCount;
私有布尔加载;
私有OnLoadMoreListener OnLoadMoreListener;
私有int visibleThreshold=5;
私人电话;
私人字符串电子邮件;
公共静态类SimpleViewWholder扩展了RecycleView.ViewHolder实现了View.OnClickListener、SwipeRefreshLayout.OnRefreshListener{
泳道布置泳道布置;
文本查看文本;
文本视图信息;
文本视图swipeImage;
线性布局线性布局;
图像视图图像视图;
@凌驾
公共void onClick(视图){
单击listener.onItemClick(getAdapterPosition(),视图);
Log.e(“位置”,String.valueOf(getAdapterPosition());
}
公共SimpleView文件夹(视图项视图){
超级(项目视图);
swipeLayout=(swipeLayout)itemView.findViewById(R.id.swipe);
text=(TextView)itemView.findViewById(R.id.input\u cname);
txtdate=(TextView)itemView.findViewById(R.id.date);
id=(TextView)itemView.findViewById(R.id.input\u-cid);
Typeface iconFont=FontManager.getTypeface(mContext,FontManager.FontManager);
FontManager.markAsIconContainer(itemView.findViewById(R.id.swipe),iconFont);
swipeImage=itemView.findViewById(R.id.swipeIcon);
imageView=新的imageView(mContext);
call=(TextView)itemView.findViewById(R.id.call\u btn);
sms=(TextView)itemView.findViewById(R.id.sms\u btn);
mail=(TextView)itemView.findViewById(R.id.email\u btn);
info=(TextView)itemView.findViewById(R.id.detail\u btn);
call.setTypeface(iconFont);
sms.setTypeface(iconFont);
邮件.setTypeface(iconFont);
信息设置字体(iconFont);
swipeLayout.addDrag(swipeLayout.DrageEdge.Left,linearLayout);
setOnClickListener(这个);
<?xml version="1.0" encoding="utf-8"?>
<com.daimajia.swipe.SwipeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:swipe="http://schemas.android.com/apk/res-auto"
    android:id="@+id/swipe"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    swipe:leftEdgeSwipeOffset="0dp"
    swipe:rightEdgeSwipeOffset="0dp">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="80dp"
        android:background="#FF5534"
        android:gravity="center"
        android:tag="Bottom3"
        android:weightSum="10">

        <ImageView
            android:id="@+id/trash"
            android:layout_width="27dp"
            android:layout_height="30dp"
            android:layout_weight="1"
            android:src="@android:drawable/ic_delete" />

        <TextView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="5"
            android:text="Delete Item?"
            android:textColor="#fff"
            android:textSize="17sp" />

        <Button
            android:id="@+id/delete"
            android:layout_width="0dp"
            android:layout_height="40dp"
            android:layout_weight="4"
            android:background="#ffffff"
            android:text="Yes,Delete"
            android:textColor="#FF5534" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#cac6c6"
        android:padding="10dp">

        <TextView
            android:id="@+id/position"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />

        <TextView
            android:id="@+id/text_data"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:gravity="center"
            android:tag="Hover"
            android:text="Do not, for one repulse, forgo the purpose that you resolved to effort. " />
    </LinearLayout>
</com.daimajia.swipe.SwipeLayout>
public class testadapter1 extends RecyclerSwipeAdapter<testadapter1.SimpleViewHolder> {

    public static final String TAG = testadapter1.class.getSimpleName();
    private static SwipLayoutListener swipLayoutListener;
    private static ClickListener clickListener;
    String[] time;
    Animation animSlide;
    boolean ANIM_FLAG = true;
    private int lastVisibleItem, totalItemCount;
    private boolean loading;
    private OnLoadMoreListener onLoadMoreListener;
    private int visibleThreshold = 5;
    private String phone;
    private String email;


    public static class SimpleViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener, SwipeRefreshLayout.OnRefreshListener {
        SwipeLayout swipeLayout;
        TextView text;
        TextView info;
        TextView swipeImage;
        LinearLayout linearLayout;
        ImageView imageView;

        @Override
        public void onClick(View view) {
            clickListener.onItemClick(getAdapterPosition(), view);

            Log.e("position", String.valueOf(getAdapterPosition()));
        }
           public SimpleViewHolder(View itemView) {
            super(itemView);
            swipeLayout = (SwipeLayout) itemView.findViewById(R.id.swipe);
            text = (TextView) itemView.findViewById(R.id.input_cname);
            txtdate = (TextView) itemView.findViewById(R.id.date);
            id = (TextView) itemView.findViewById(R.id.input_cid);
            Typeface iconFont = FontManager.getTypeface(mContext, FontManager.FONTAWESOME);
            FontManager.markAsIconContainer(itemView.findViewById(R.id.swipe), iconFont);
            swipeImage = itemView.findViewById(R.id.swipeIcon);
            imageView = new ImageView(mContext);
            call = (TextView) itemView.findViewById(R.id.call_btn);
            sms = (TextView) itemView.findViewById(R.id.sms_btn);
            mail = (TextView) itemView.findViewById(R.id.email_btn);
            info = (TextView) itemView.findViewById(R.id.detail_btn);
            call.setTypeface(iconFont);
            sms.setTypeface(iconFont);
            mail.setTypeface(iconFont);
            info.setTypeface(iconFont);
            swipeLayout.addDrag(SwipeLayout.DragEdge.Left, linearLayout);
            itemView.setOnClickListener(this);

            swipeLayout.addSwipeListener(new SimpleSwipeListener() {
                @Override
                public void onOpen(SwipeLayout layout) {
                    if (swipLayoutListener != null) {
                        swipLayoutListener.onOpen(layout, getAdapterPosition());
                    }
                }
            });
        }

    }

    private static Context mContext;
    ArrayList<HashMap<String, String>> mDataset;

    public testadapter1(Context mContext, ArrayList<HashMap<String, String>> objects, RecyclerView listView) {
        this.mContext = mContext;
        this.mDataset = objects;

        if (listView.getLayoutManager() instanceof LinearLayoutManager) {

            final LinearLayoutManager linearLayoutManager = (LinearLayoutManager) listView
                    .getLayoutManager();


            listView
                    .addOnScrollListener(new RecyclerView.OnScrollListener() {
                        @Override
                        public void onScrolled(RecyclerView listView,
                                               int dx, int dy) {
                            super.onScrolled(listView, dx, dy);

                            totalItemCount = linearLayoutManager.getItemCount();
                            lastVisibleItem = linearLayoutManager
                                    .findLastVisibleItemPosition();
                            if (!loading
                                    && totalItemCount <= (lastVisibleItem + visibleThreshold)) {
                                // End has been reached
                                // Do something
                                if (onLoadMoreListener != null) {
                                    onLoadMoreListener.onLoadMore();
                                }
                                loading = true;
                            }
                        }
                    });
        }


    }

    @Override
    public SimpleViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.ledger_layout, parent, false);

        return new SimpleViewHolder(view);
    }


    public interface ClickListener {
        void onItemClick(int position, View v);
    }

    @Override
    public void onBindViewHolder(final SimpleViewHolder viewHolder, final int position) {

        viewHolder.txtdate.setText(mDataset.get(position).get("date"));
        viewHolder.id.setText("Amount: ₹ " +         viewHolder.info.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
//                HashMap<String, String> mDataset = getItem1(position);
                Intent intent = new Intent(mContext, LedgerDetailActivity.class);
                intent.putExtra("ledger_name", String.valueOf(mDataset.get(position).get("ledger_name")));
//                Log.e("intent", mDataset.get("ledger_name"));
                mContext.startActivity(intent);
            }
        });

    }

    @Override
    public int getItemCount() {
        if (mDataset == null) {
            Log.d(TAG, "getCount: 0");
            return 0;
        } else {
            Log.d(TAG, "getCount: " + mDataset.size());
            return mDataset.size();
        }
    }

    @Override
    public int getSwipeLayoutResourceId(int position) {
        return R.id.swipe;
    }

    public void addSwipeListener(SwipLayoutListener swipLayoutListener) {
        testadapter1.swipLayoutListener = swipLayoutListener;
    }

    public interface SwipLayoutListener {
        void onOpen(SwipeLayout layout, int position);
    }
<android.support.v4.widget.SwipeRefreshLayout 
  xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/frame3"
android:layout_width="match_parent"
android:layout_height="wrap_content">


<android.support.v7.widget.RecyclerView
    android:id="@+id/list_ledger"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:clipToPadding="false"/>

<!-- Adding bottom sheet after main content -->
</android.support.v4.widget.SwipeRefreshLayout>
<?xml version="1.0" encoding="utf-8"?>
 <com.daimajia.swipe.SwipeLayout 
  xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:swipe="http://schemas.android.com/apk/res-auto"
android:id="@+id/swipe"
android:layout_width="match_parent"
android:layout_height="wrap_content"
swipe:leftEdgeSwipeOffset="0dp"
swipe:rightEdgeSwipeOffset="0dp">


<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/colorPrimaryDark"
    android:gravity="center"
    android:weightSum="7">

    <RelativeLayout
        android:id="@+id/relativeLayoutSms"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:gravity="center">

        <com.mikepenz.iconics.view.IconicsTextView
            android:id="@+id/call_btn"
            android:layout_width="30dp"
            android:layout_height="30dp"
            android:layout_centerHorizontal="true"
            android:gravity="center"
            android:paddingTop="5dp"
            android:shadowDx="3"
            android:shadowDy="3"
            android:shadowRadius="1"
            android:text="@string/icon_phone"
            android:textColor="@color/white"
            android:textSize="20sp" />

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@+id/call_btn"
            android:layout_centerHorizontal="true"
            android:gravity="center"
            android:paddingTop="5dp"
            android:text="Call"
            android:textColor="@color/white"
            android:textSize="12sp"
            android:textStyle="bold" />
    </RelativeLayout>

    <RelativeLayout
        android:id="@+id/relativeLayoutCall"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:gravity="center">

        <com.mikepenz.iconics.view.IconicsTextView
            android:id="@+id/sms_btn"
            android:layout_width="30dp"
            android:layout_height="30dp"
            android:layout_centerHorizontal="true"
            android:gravity="center"
            android:paddingTop="5dp"
            android:shadowDx="3"
            android:shadowDy="3"
            android:shadowRadius="1"
            android:text="@string/icon_sms"
            android:textColor="@color/white"
            android:textSize="20sp" />

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@+id/sms_btn"
            android:layout_centerHorizontal="true"
            android:gravity="center"
            android:paddingTop="5dp"
            android:text="SMS"
            android:textColor="@color/white"
            android:textSize="12sp"
            android:textStyle="bold" />
    </RelativeLayout>

    <RelativeLayout
        android:id="@+id/relativeLayoutMail"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:gravity="center">

        <com.mikepenz.iconics.view.IconicsTextView
            android:id="@+id/email_btn"
            android:layout_width="30dp"
            android:layout_height="30dp"
            android:layout_centerHorizontal="true"
            android:gravity="center"
            android:paddingTop="5dp"
            android:shadowDx="3"
            android:shadowDy="3"
            android:shadowRadius="1"
            android:text="@string/icon_mail"
            android:textColor="@color/white"
            android:textSize="20sp" />

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@+id/email_btn"
            android:layout_centerHorizontal="true"
            android:gravity="center"
            android:paddingTop="5dp"
            android:text="Email"
            android:textColor="@color/white"
            android:textSize="12sp"
            android:textStyle="bold" />
    </RelativeLayout>

    <RelativeLayout
        android:id="@+id/relativeLayoutInfo"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:gravity="center">

        <com.mikepenz.iconics.view.IconicsTextView
            android:id="@+id/detail_btn"
            android:layout_width="30dp"
            android:layout_height="30dp"
            android:layout_centerHorizontal="true"
            android:gravity="center"
            android:paddingTop="5dp"
            android:shadowDx="3"
            android:shadowDy="3"
            android:shadowRadius="1"
            android:text="@string/icon_info"
            android:textColor="@color/white"
            android:textSize="20sp" />

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@+id/detail_btn"
            android:layout_centerHorizontal="true"
            android:gravity="center"
            android:paddingTop="5dp"
            android:text="Details"
            android:textColor="@color/white"
            android:textSize="12sp"
            android:textStyle="bold" />
    </RelativeLayout>
</LinearLayout>

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:paddingBottom="5dp"
    android:paddingTop="5dp">

    <TextView
        android:id="@+id/input_cname"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_alignStart="@+id/date"
        android:layout_marginEnd="5dp"
        android:layout_toStartOf="@id/amount"
        android:ellipsize="end"
        android:maxLines="1"
        android:textColor="@color/colorAccent"
        android:textSize="16sp" />

    <TextView
        android:id="@+id/date"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/input_cname"
        android:layout_marginStart="10dp"
        android:paddingTop="2dp"
        android:textColor="@color/black"
        android:textSize="14sp" />

    <TextView
        android:id="@+id/input_cid"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentEnd="true"
        android:layout_centerInParent="true"
        android:layout_marginEnd="2dp"
        android:layout_marginStart="10dp"
        android:paddingEnd="5dp"
        android:textAlignment="viewEnd"
        android:textColor="@color/black"
        android:textSize="14sp" />

    <TextView
        android:id="@+id/gp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentEnd="true"
        android:layout_alignStart="@+id/input_cid"
        android:layout_below="@+id/input_cname"
        android:textAlignment="viewEnd"
        android:textColor="@color/bb_darkBackgroundColor"
        android:textSize="14sp"
        android:visibility="gone" />

    <TextView
        android:id="@+id/swipeIcon"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentEnd="true"
        android:layout_below="@id/gp"
        android:layout_marginTop="14dp"
        android:paddingStart="6dp"
        android:visibility="gone" />
</RelativeLayout>
//ATTENTION: Never bind listener or fill values in generateView.
//           You have to do that in fillValues method.
@Override
public View generateView(int position, ViewGroup parent) {
    return LayoutInflater.from(mContext).inflate(R.layout.grid_item, null);
}

@Override
public void fillValues(int position, View convertView) {
    TextView t = (TextView)convertView.findViewById(R.id.position);
    t.setText((position + 1 )+".");
}