如何在Adapter类中的listview项上获取动画?

时间:2014-11-11 05:54:30

标签: java android android-listview adapter

我已成功实施ListView。我的TextView项目中有ListView。所以我将在适配器类中单击textview。我也在Adapter课程中正确点击了。但我想为我点击的特定TextView制作动画,但它没有发生。这是我的代码。 提前谢谢。

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {

        View row = convertView;
        RecordHolder holder = null;
        holder = new RecordHolder();
        if (row == null) {
            LayoutInflater inflater = (LayoutInflater) context
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            row = inflater.inflate(layoutResourceId, parent, false);

            holder.floorNo = (TextView) row.findViewById(R.id.tv_floorno);
            holder.hidedLayout = (LinearLayout) row.findViewById(R.id.hidedLayout);

            row.setTag(holder);
        } else {
            holder = (RecordHolder) row.getTag();
        }

        FloorDetailItem floorDetailItem = data.get(position);
        holder.floorNo.setText("Floor " + floorDetailItem.getFloor());

        holder.floorNo.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                new Handler().postDelayed(new Runnable() {

                    @Override
                    public void run() {
                        holder.floorNo.startAnimation(leftWrite);
                        handler = new Handler();
                        holder.floorNo.setVisibility(View.GONE);
                        handler.postDelayed(mChangeSplash, 1000);
                    }
                }, 100);
            }
        });
        return row;
    }

    private Runnable mChangeSplash = new Runnable() {
        public void run() {
            if (!isFinishing()) {
                handler.removeCallbacks(this);
                holder.hidedLayout.setVisibility(View.VISIBLE);
            }
        }
    };
     class RecordHolder {
        TextView floorNo;
        LinearLayout hidedLayout;
    }

}

但是我进入OnClickListener(),错误的是“持有人”。错误如下: - “不能引用封闭范围中定义的非最终局部变量持有者” 而且我无法做到最终。

2 个答案:

答案 0 :(得分:0)

最简单的方法是创建global变量,而不是final。它将摆脱错误。

因为我不知道代码中哪个variable出错,我会举个例子:

在类中创建一个普通的私有(或其他)变量,因此所有方法都可以访问它:

private String globalName;

然后,您可以在getView中分配变量:

globalName = getItem(position).getName();

<强>更新

使用此链接中提供的答案来确定holder

adapter holder on listener cannot be final

答案 1 :(得分:0)

绝对使用

holder.floorNo.startAnimation(leftWrite);<br>
handler = new Handler();<br>
holder.floorNo.setVisibility(View.GONE);<br>
handler.postDelayed(mChangeSplash, 1000);<br>

您可以简单地引用视图v,它是onclick的参数,与holder.floorNo

相同

喜欢这个

v.startAnimation(leftWrite);<br>
handler = new Handler();<br>
v.setVisibility(View.GONE);<br>
handler.postDelayed(mChangeSplash, 1000);<br>

跳它会删除你的错误。

相关问题