Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/206.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在适配器类中获取listview项上的动画?_Java_Android_Android Listview_Adapter - Fatal编程技术网

Java 如何在适配器类中获取listview项上的动画?

Java 如何在适配器类中获取listview项上的动画?,java,android,android-listview,adapter,Java,Android,Android Listview,Adapter,我已经成功地实现了ListView。我的ListView项目中有一个TextView。因此,我将在适配器类中获得textview单击。我在Adapter类中也正确单击了。但是我想为我要单击的特定TextView设置动画,但它没有发生。这是我的代码。 提前谢谢 @Override public View getView(int position, View convertView, ViewGroup parent) { View row = convertVie

我已经成功地实现了
ListView
。我的
ListView
项目中有一个
TextView
。因此,我将在适配器类中获得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()
,在“holder”中出现了错误。错误如下:-“无法引用在封闭范围中定义的非最终局部变量保持器”
我不能把它设为final。

最简单的方法是创建一个
全局
变量,而不是
final
。它将消除错误

由于我不知道代码中的哪个
变量
出错,我将举一个例子:

在类内部创建一个普通、私有(或其他)变量,以便所有方法都可以访问它:

private String globalName;
然后,您可以在getView中分配变量:

globalName = getItem(position).getName();
更新

使用此链接中提供的答案结束
持有者

代替使用

holder.floorNo.startAnimation(leftWrite);<br>
handler = new Handler();<br>
holder.floorNo.setVisibility(View.GONE);<br>
handler.postDelayed(mChangeSplash, 1000);<br>
holder.floorNo.startAnimation(leftWrite)
handler=新的handler()
保持架。地板设置可见性(视图。消失)
handler.postDelayed(mChangeSplash,1000)
您只需参考视图v,它是onclick的一个参数,与holder.floorNo相同

你喜欢这样吗

v.startAnimation(leftWrite);<br>
handler = new Handler();<br>
v.setVisibility(View.GONE);<br>
handler.postDelayed(mChangeSplash, 1000);<br>
v.startAnimation(leftWrite)
handler=新的handler()
v、 设置可见性(View.GONE)
handler.postDelayed(mChangeSplash,1000)

Hop它将删除您的错误。

我无法使其全局化,因为在使其全局化之后。如何获得正确的点击位置??“holder.floorNo.”在这一行中,“holder.floorNo.startAnimation(leftWrite);”