自定义ListView展开后不会崩溃

但是一个

我有一个自定义的listView,它显示一个Image和一些文本,以及3个仅在轻按一个项目时才出现的按钮。它们出现在短暂的下拉动画之后。

单击列表中的某个项目后,将显示按钮,但是单击同一项目时,这些按钮不会缩回视图,它们保持活动状态并且可以单击,但是当我单击其他项目时,该行会展开并显示按钮,但是它们在再次单击后也不会折叠。

附带一提,我也想知道一旦列表上的另一个项目展开后如何自动折叠其他项目

这是listView的一行

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:padding="2dp">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
    <ImageView
        android:id="@+id/icon"
        android:layout_width="80dp"
        android:layout_height="50dp"
        android:layout_alignParentTop="true"
        android:layout_gravity="center_horizontal"
        android:scaleType="fitCenter"
        android:src="@drawable/placeholder" />

    <TextView
        android:id="@+id/label"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:layout_margin="8dp"
        android:maxLines="3" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="50dip"
        android:orientation="horizontal"
        android:id="@+id/listview_toolbar"
        android:layout_marginBottom="-50dip"
        android:visibility="gone"
        android:weightSum="90">
        <Button
            android:layout_width="fill_parent"
            android:layout_height="50dip"
            android:text="@string/view"
            android:focusableInTouchMode="false"
            android:id="@+id/view"
            android:layout_weight="30" />

        <Button
            android:layout_width="fill_parent"
            android:layout_height="50dip"
            android:text="@string/edit"
            android:id="@+id/edit"
            android:focusableInTouchMode="false"
            android:layout_weight="30" />

        <Button
            android:layout_width="fill_parent"
            android:layout_height="50dip"
            android:focusableInTouchMode="false"
            android:text="@string/remove"
            android:id="@+id/remove"
            android:layout_weight="30" />

    </LinearLayout>


</LinearLayout>

这是我的自定义适配器

public class MyAdapter extends ArrayAdapter<String> {
        private final Activity context;
        private final ArrayList<String> names;

        class ViewHolder {
            public TextView text;
            public ImageView image;
            public View toolbar;
        }

        public MyAdapter(Activity context, ArrayList<String> names) {
            super(context, R.layout.ui_row, names);
            this.context = context;
            this.names = names;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            // reuse views
            if (convertView == null) {
                convertView = getLayoutInflater().inflate(R.layout.ui_row, null);
                // configure view holder
                ViewHolder viewHolder = new ViewHolder();
                viewHolder.text = (TextView) convertView.findViewById(R.id.label);
                viewHolder.image = (ImageView) convertView.findViewById(R.id.icon);
                viewHolder.toolbar = convertView.findViewById(R.id.listview_toolbar);
                convertView.setTag(viewHolder);
            }
            // fill data
            ViewHolder holder = (ViewHolder) convertView.getTag();
            holder.text.setText(filelist.get(position));//sets textview of item row in listview
            PicassoTools.clearCache(Picasso.with(context));//resets picasso, erases caches
            Picasso.with(context).load(new File( Environment.getExternalStorageDirectory() + "//Thumbnails//" + position)).into(holder.image);
            ((LinearLayout.LayoutParams) holder.toolbar.getLayoutParams()).bottomMargin = -50;
            holder.toolbar.setVisibility(View.GONE);
            return convertView;
        }


    }

这是onCreate

    protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.mainactivity);

            ac = this;
            adapter = new MyAdapter(ac, filelist);



            listview = (ListView) findViewById(R.id.listview);


                    listview.setAdapter(adapter);
                    ListViewSetClickListener();

listview.setOnItemClickListener(new AdapterView.OnItemClickListener()
        {
            public void onItemClick(AdapterView<?> parent, final View view, int position, long id)
            {

                Toast.makeText(getApplicationContext(), "Button Tap", Toast.LENGTH_SHORT).show();

                View toolbar = view.findViewById(R.id.listview_toolbar);
                Expand_Custom_Animation expandAni = new Expand_Custom_Animation(toolbar, 500);
                toolbar.startAnimation(expandAni);

                Button viewB = (Button) view.findViewById(R.id.view);
                viewB.setOnClickListener(new View.OnClickListener()
                {
                    @Override
                    public void onClick(View v)
                    {
                        Toast.makeText(getApplicationContext(), "View", Toast.LENGTH_SHORT).show();
                    }
                });

                Button edit = (Button) view.findViewById(R.id.edit);
                edit.setOnClickListener(new View.OnClickListener()
                {
                    @Override
                    public void onClick(View v)
                    {
                        Toast.makeText(getApplicationContext(), "Edit", Toast.LENGTH_SHORT).show();
                    }
                });

                Button remove = (Button) view.findViewById(R.id.remove);
                remove.setOnClickListener(new View.OnClickListener()
                {
                    @Override
                    public void onClick(View v)
                    {
                        Toast.makeText(getApplicationContext(), "Remove", Toast.LENGTH_SHORT).show();
                    }
                });


            }
        });



        }

这是动画类Expand_Custom_Animation.java

public class Expand_Custom_Animation extends Animation 
{
    private View mAnimatedView;
    private LayoutParams mViewLayoutParams;
    private int mMarginStart, mMarginEnd;
    private boolean mIsVisibleAfter = false;
    private boolean mWasEndedAlready = false;

    public Expand_Custom_Animation(View view, int duration) 
    {
        setDuration(duration);
        mAnimatedView = view;
        mViewLayoutParams = (LayoutParams) view.getLayoutParams();
        mIsVisibleAfter = (view.getVisibility() == View.VISIBLE);
        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) 
        {
            mViewLayoutParams.bottomMargin = mMarginStart + (int) ((mMarginEnd - mMarginStart) * interpolatedTime);
            mAnimatedView.requestLayout();
        } 
        else if (!mWasEndedAlready)
        {
            mViewLayoutParams.bottomMargin = mMarginEnd;
            mAnimatedView.requestLayout();

            if (mIsVisibleAfter) 
            {
                mAnimatedView.setVisibility(View.GONE);
            }
            mWasEndedAlready = true;
        }
    }
}
但是一个

原来

        android:focusableInTouchMode="false"

在我的xml布局中不起作用。所以我通过ListView OnclickListener以编程方式对每个带有此代码的按钮进行了操作

            button.setFocusable(false);

现在可以正常工作

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

删除项目后,使用自定义单元格工厂的ListView不会更新

来自分类Dev

删除标题后,自定义对话框崩溃

来自分类Dev

自定义listitem点击不会触发listview.onclicklistener

来自分类Dev

Android:-使用自定义ListView不会显示内容

来自分类Dev

具有自定义ArrayAdapter setOnItemClickListener的ListView不会触发

来自分类Dev

自定义键盘在App Store中崩溃,但从Xcode启动时不会崩溃

来自分类Dev

Android:方向更改后,自定义ListView消失

来自分类Dev

滚动我的自定义ListView后取消选中CheckBoxes

来自分类Dev

展开自定义 ListView (android) 中的所有列表项

来自分类Dev

展开自定义列表类型

来自分类Dev

自定义TableViewCell类无法返回枚举值而不会崩溃

来自分类Dev

自定义TableViewCell类无法返回枚举值而不会崩溃

来自分类Dev

自定义ListView setOnItemClickListener

来自分类Dev

Android +自定义ListView

来自分类Dev

Android自定义Listview

来自分类Dev

自定义Listview与imageview

来自分类Dev

动态自定义ListView?

来自分类Dev

自定义ListView setOnItemClickListener

来自分类Dev

添加UICollectionView后,iOS 9中的“自定义键盘”崩溃

来自分类Dev

自定义对话框dismiss()后调用finish()时,Android活动崩溃

来自分类Dev

添加自定义采样器后,启动时Jmeter崩溃

来自分类Dev

使用 ListViews 和自定义 ArrayAdapter 实现 Fragment 后,应用程序不断崩溃

来自分类Dev

自定义UITableViewCell导致UISearchBar崩溃

来自分类Dev

自定义@IBDesignable UIButton使Xcode崩溃

来自分类Dev

创建自定义UITableViewCell时崩溃

来自分类Dev

使用自定义视图即时崩溃

来自分类Dev

使用自定义数组适配器,ListFragment中的项目不会显示在Listview中

来自分类Dev

自定义Listview不会出现在对话框中

来自分类Dev

使用自定义数组适配器,ListFragment中的项目不会显示在Listview中

Related 相关文章

  1. 1

    删除项目后,使用自定义单元格工厂的ListView不会更新

  2. 2

    删除标题后,自定义对话框崩溃

  3. 3

    自定义listitem点击不会触发listview.onclicklistener

  4. 4

    Android:-使用自定义ListView不会显示内容

  5. 5

    具有自定义ArrayAdapter setOnItemClickListener的ListView不会触发

  6. 6

    自定义键盘在App Store中崩溃,但从Xcode启动时不会崩溃

  7. 7

    Android:方向更改后,自定义ListView消失

  8. 8

    滚动我的自定义ListView后取消选中CheckBoxes

  9. 9

    展开自定义 ListView (android) 中的所有列表项

  10. 10

    展开自定义列表类型

  11. 11

    自定义TableViewCell类无法返回枚举值而不会崩溃

  12. 12

    自定义TableViewCell类无法返回枚举值而不会崩溃

  13. 13

    自定义ListView setOnItemClickListener

  14. 14

    Android +自定义ListView

  15. 15

    Android自定义Listview

  16. 16

    自定义Listview与imageview

  17. 17

    动态自定义ListView?

  18. 18

    自定义ListView setOnItemClickListener

  19. 19

    添加UICollectionView后,iOS 9中的“自定义键盘”崩溃

  20. 20

    自定义对话框dismiss()后调用finish()时,Android活动崩溃

  21. 21

    添加自定义采样器后,启动时Jmeter崩溃

  22. 22

    使用 ListViews 和自定义 ArrayAdapter 实现 Fragment 后,应用程序不断崩溃

  23. 23

    自定义UITableViewCell导致UISearchBar崩溃

  24. 24

    自定义@IBDesignable UIButton使Xcode崩溃

  25. 25

    创建自定义UITableViewCell时崩溃

  26. 26

    使用自定义视图即时崩溃

  27. 27

    使用自定义数组适配器,ListFragment中的项目不会显示在Listview中

  28. 28

    自定义Listview不会出现在对话框中

  29. 29

    使用自定义数组适配器,ListFragment中的项目不会显示在Listview中

热门标签

归档