急!!!!android Listview滑动后,复用问题! 求大家帮帮忙看一下!!
--------------------编程问答-------------------- 没人看吗》??? 求大哥些 帮帮忙!!!! --------------------编程问答-------------------- 就是 在点击item时 ,,以一个动画 展开一个隐藏的layout。。但是在滑动的时候 出现了。。 展开的项 跳到下面去了!我也试着 记录了 点击项,,但是 整出来 还是有bug。。。求大神 帮忙 看一下啊!!!!!! --------------------编程问答-------------------- 难道 真的没人看啊!!!!!! --------------------编程问答-------------------- 请问您的问题解决了吗,我这里有个解决方法!! --------------------编程问答-------------------- 问下 你最后解决了么~
//这是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>
本人Q 371192678 跪求 卡了3天了 --------------------编程问答-------------------- 每次getView初始化item的时候把layout隐藏就可以了。。。有必要这么纠结么
补充:移动开发 , Android