当前位置:编程学习 > wap >>

急!!!!android Listview滑动后,复用问题! 求大家帮帮忙看一下!!


//这是activity ,点击item实现动画方式的展开item内隐藏的布局,但是在滑动listview的时//候会出现一点问题!请大家帮忙看一下 ,,谢谢!!!
package com.example.aaaa;


import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.*;

public class ExpandAnimationDemo extends Activity {
private View viewDe = null;
CustomListAdapter listAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); 
setContentView(R.layout.main);

ListView list = (ListView) findViewById(R.id.udiniList);

listAdapter = new CustomListAdapter(this, R.layout.list_item);
for (int i = 0; i < 20; i++)
listAdapter.add("udini" + i);
list.setAdapter(listAdapter);

list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, final View view,
int position, long id) {
if (viewDe == null) {
viewDe = view.findViewById(R.id.toolbar);
} else {
ExpandAnimation expandAni = new ExpandAnimation(viewDe, 100);
viewDe.startAnimation(expandAni);
if (viewDe == view.findViewById(R.id.toolbar)) {
viewDe = null;
return;
}
viewDe = view.findViewById(R.id.toolbar);
}

ExpandAnimation expandAni = new ExpandAnimation(viewDe, 100);

viewDe.startAnimation(expandAni);
}
});
}

class CustomListAdapter extends ArrayAdapter<String> {
private View mLastView;

public CustomListAdapter(Context context, int textViewResourceId) {
super(context, textViewResourceId);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {

if (convertView == null) {
convertView = getLayoutInflater().inflate(R.layout.list_item,
null);
}
System.out.println(position);
View toolbar = convertView.findViewById(R.id.toolbar);



((TextView) convertView.findViewById(R.id.title))
.setText(getItem(position));

return convertView;
}

}
}


//这是动画类

package com.example.aaaa;

import android.view.View;
import android.view.animation.Animation;
import android.view.animation.Transformation;
import android.widget.LinearLayout.LayoutParams;

/**
 * This animation class is animating the expanding and reducing the size of a
 * view. The animation toggles between the Expand and Reduce, depending on the
 * current state of the view
 * 
 * @author Udinic
 * 
 */
public class ExpandAnimation extends Animation {
private View mAnimatedView;
private LayoutParams mViewLayoutParams;
private int mMarginStart, mMarginEnd;
private boolean mIsVisibleAfter = false;
private boolean mWasEndedAlready = false;

/**
 * Initialize the animation
 * 
 * @param view
 *            The layout we want to animate
 * @param duration
 *            The duration of the animation, in ms
 */
public ExpandAnimation(View view, int duration) {

setDuration(duration);
mAnimatedView = view;
mViewLayoutParams = (LayoutParams) view.getLayoutParams();

// if the bottom margin is 0,
// then after the animation will end it'll be negative, and invisible.
mIsVisibleAfter = (mViewLayoutParams.bottomMargin == 0);

mMarginStart = mViewLayoutParams.bottomMargin;
mMarginEnd = (mMarginStart == 0 ? (0 - view.getHeight()) : 0);

view.setVisibility(View.VISIBLE);
}

@Override
protected void applyTransformation(float interpolatedTime, Transformation t) {
super.applyTransformation(interpolatedTime, t);

if (interpolatedTime < 1.0f) {

// Calculating the new bottom margin, and setting it
mViewLayoutParams.bottomMargin = mMarginStart
+ (int) ((mMarginEnd - mMarginStart) * interpolatedTime);

// Invalidating the layout, making us seeing the changes we made
mAnimatedView.requestLayout();

// Making sure we didn't run the ending before (it happens!)
} else if (!mWasEndedAlready) {
mViewLayoutParams.bottomMargin = mMarginEnd;
mAnimatedView.requestLayout();

if (mIsVisibleAfter) {
mAnimatedView.setVisibility(View.GONE);
}
mWasEndedAlready = true;
}

}
}


//这是list_item.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/title"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:focusable="false"
        android:focusableInTouchMode="false"
        android:padding="20dip" >
    </TextView>

    <!-- *********************** -->
    <!-- *** TOOLBAR LAYOUT **** -->
    <!-- *********************** -->

    <LinearLayout
        android:id="@+id/toolbar"
        android:layout_width="fill_parent"
        android:layout_height="50dip"
        android:layout_marginBottom="-50dip"
        android:visibility="gone" >

        <Button
            android:id="@+id/doSomething1"
            android:layout_width="wrap_content"
            android:layout_height="50dip"
            android:focusable="false"
            android:focusableInTouchMode="false"
            android:text="Harder" >
        </Button>

        <Button
            android:id="@+id/doSomething2"
            android:layout_width="wrap_content"
            android:layout_height="50dip"
            android:focusable="false"
            android:focusableInTouchMode="false"
            android:text="Better" >
        </Button>

        <Button
            android:id="@+id/doSomething3"
            android:layout_width="wrap_content"
            android:layout_height="50dip"
            android:focusable="false"
            android:focusableInTouchMode="false"
            android:text="Faster" >
        </Button>

        <Button
            android:id="@+id/doSomething4"
            android:layout_width="wrap_content"
            android:layout_height="50dip"
            android:focusable="false"
            android:focusableInTouchMode="false"
            android:text="Stronger" >
        </Button>
    </LinearLayout>


</LinearLayout>

//这是main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <ListView
        android:id="@+id/udiniList"
        android:layout_width="fill_parent"
        android:listSelector="#00000000"
        android:layout_height="fill_parent" >
    </ListView>

</LinearLayout>

--------------------编程问答-------------------- 没人看吗》???  求大哥些 帮帮忙!!!! --------------------编程问答-------------------- 就是 在点击item时 ,,以一个动画 展开一个隐藏的layout。。但是在滑动的时候 出现了。。 展开的项 跳到下面去了!我也试着 记录了 点击项,,但是 整出来 还是有bug。。。求大神 帮忙 看一下啊!!!!!! --------------------编程问答-------------------- 难道 真的没人看啊!!!!!! --------------------编程问答-------------------- 请问您的问题解决了吗,我这里有个解决方法!! --------------------编程问答-------------------- 问下 你最后解决了么~
本人Q 371192678 跪求 卡了3天了 --------------------编程问答-------------------- 每次getView初始化item的时候把layout隐藏就可以了。。。有必要这么纠结么
补充:移动开发 ,  Android
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,