Android GridView OnClick侦听器不';我有时不工作
我有个奇怪的问题。我有一个包含9项(0-8)的gridView(可以是多/少)。如下图所示,它显示了我的设备屏幕上的前4项 每当单击项目时,都会添加一个绿色的勾号。它几乎每次都能正常工作。但每当我向下滚动并快速单击时,第5个(第4项)项的click listener不会立即触发。这可能是一个小问题,但从用户的角度来看,有时可能有点烦人。请告诉我怎样才能使它完美无瑕?以下是我的customAdapter的代码:Android GridView OnClick侦听器不';我有时不工作,android,gridview,custom-adapter,recycle,Android,Gridview,Custom Adapter,Recycle,我有个奇怪的问题。我有一个包含9项(0-8)的gridView(可以是多/少)。如下图所示,它显示了我的设备屏幕上的前4项 每当单击项目时,都会添加一个绿色的勾号。它几乎每次都能正常工作。但每当我向下滚动并快速单击时,第5个(第4项)项的click listener不会立即触发。这可能是一个小问题,但从用户的角度来看,有时可能有点烦人。请告诉我怎样才能使它完美无瑕?以下是我的customAdapter的代码: @Override public View getView(final i
@Override
public View getView(final int position, View convertView, final ViewGroup parent) {
View rowView = convertView;
Holder holder = null;
if (rowView == null) {
inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
rowView = inflater.inflate(R.layout.single_griditem_gitfamount, null);
holder = new Holder();
holder.textViewGiftAmount = (TextView) rowView.findViewById(R.id.textViewGridAmount);
holder.imageViewGiftTick = (ImageView) rowView.findViewById(R.id.imageViewGridTick);
holder.cardViewGridAmount = (CardView) rowView.findViewById(R.id.cardViewGridAmount);
rowView.setTag(holder);
} else {
rowView = convertView;
holder = (Holder) rowView.getTag();
}
holder.textViewGiftAmount.setText("Item " + position);
if (position == clickedpos) {
holder.imageViewGiftTick.setVisibility(View.VISIBLE);
}
else{
holder.imageViewGiftTick.setVisibility(View.GONE);
}
// final Holder h = holder;
holder.cardViewGridAmount.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
clickedpos = position;
notifyDataSetChanged();
}
});
return rowView;
}
如果您正在单击完整项,则可以选择itemclicklistener
gridview.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
Toast.makeText(MainActivity.this, "" + position, Toast.LENGTH_SHORT).show();
}
});
gridview.setOnItemClickListener(新的OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父视图、视图v、整型位置、长id){
Toast.makeText(MainActivity.this,“+”位置,Toast.LENGTH_SHORT.show();
}
});
您也可以使用recyclerview。如果您正在单击完整的项目,则可以选择项目ClickListener
gridview.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
Toast.makeText(MainActivity.this, "" + position, Toast.LENGTH_SHORT).show();
}
});
gridview.setOnItemClickListener(新的OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父视图、视图v、整型位置、长id){
Toast.makeText(MainActivity.this,“+”位置,Toast.LENGTH_SHORT.show();
}
});
你也可以使用recyclerview。为什么不使用recyclerview呢。它比这更好。我怎样才能像在recyclerView中的gridView那样在每行显示2个项目?您可以通过@Uma Achanta使用gridlayoutmanagergo。非常感谢您的帮助。最后一个问题,你确定切换到recyclerview会提供更好的性能吗?为什么不选择recyclerview呢。它比这更好。我怎样才能像在recyclerView中的gridView那样在每行显示2个项目?您可以通过@Uma Achanta使用gridlayoutmanagergo。非常感谢您的帮助。最后一个问题,您确定切换到recyclerview会提供更好的性能吗?