所以我的问题是这样的。我有一个 ListView ,每行都有一个 viewflipper。当数据变得更多并且它们不适合屏幕时,当我单击一行以启用 viewflipper 时,它会翻转该行,但也会翻转屏幕下方的另一个随机行。(如果我向下滚动,我可以看到它)
有时,如果我再次上下滚动,翻转的行(第二行)会切换回正常状态并再次翻转。
这是我的适配器
public class HistoryBaseAdapter extends BaseAdapter {
private static ArrayList<HistoryResults> searchArrayList;
private Context CONTEXT;
public HistoryBaseAdapter(Context context, ArrayList<HistoryResults> results, boolean length) {
searchArrayList = results;
mInflater = LayoutInflater.from(context);
log_length = length;
CONTEXT = context;
}
@Override
public int getCount() {
return searchArrayList.size();
}
@Override
public Object getItem(int position) {
return searchArrayList.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
final ViewHolder holder;
if (convertView == null) {
convertView = mInflater.inflate(R.layout.history_row_view, null);
holder = new ViewHolder();
holder.flipper = (ViewFlipper) convertView.findViewById(R.id.flipper);
holder.flipper.setInAnimation(AnimationUtils.loadAnimation(CONTEXT, R.anim.slide_in));
holder.flipper.setOutAnimation(AnimationUtils.loadAnimation(CONTEXT, R.anim.slide_out));
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.flipper.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
holder.flipper.showNext();
}
});
return convertView;
}
static class ViewHolder {
ViewFlipper flipper;
}
谁知道哪里出了问题?
最佳答案
实际上@Raghunandan 帮了大忙!! https://www.youtube.com/watch?v=8MIfSxgsHIs
我刚刚添加了 2 行
holder.flipper.setOnClickListener(new OnClickListener() {
boolean hasTransientState = true;
@Override
public void onClick(View v) {
holder.flipper.showNext();
holder.flipper.setHasTransientState(hasTransientState);
hasTransientState = !hasTransientState;
}
});
我不确定这是否是更有效的方法,但它确实有效! 谢谢!!
关于Android:每行中带有viewflipper的Listview onclick翻转更多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22789303/