首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >不能将android.widget.FrameLayout转换为com.ramotion.foldingcell.FoldingCell

不能将android.widget.FrameLayout转换为com.ramotion.foldingcell.FoldingCell
EN

Stack Overflow用户
提问于 2018-06-30 23:13:44
回答 1查看 325关注 0票数 0

我有一个Framelayout,我想在它里面有一个Foldercell,但是我有这个错误,我不知道如何解决它。

代码语言:javascript
复制
E/AndroidRuntime: FATAL EXCEPTION: main
                  Process: com.xbxvxe.rndfy, PID: 25023
                  java.lang.ClassCastException: android.widget.FrameLayout cannot be cast to com.ramotion.foldingcell.FoldingCell
                      at com.xbxvxe.rndfy.fragment.FoldingCellListAdapter.getView(FoldingCellListAdapter.java:52)
                      at android.widget.AbsListView.obtainView(AbsListView.java:2365)
                      at android.widget.ListView.measureHeightOfChildren(ListView.java:1408)
                      at android.widget.ListView.onMeasure(ListView.java:1315)
                      at android.view.View.measure(View.java:22071)
                      at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6602)
                      at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
                      at android.view.View.measure(View.java:22071)
                      at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6602)
                      at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
                      at android.support.v7.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:141)
                      at android.view.View.measure(View.java:22071)
                      at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6602)
                      at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1514)
                      at android.widget.LinearLayout.measureVertical(LinearLayout.java:806)
                      at android.widget.LinearLayout.onMeasure(LinearLayout.java:685)
                      at android.view.View.measure(View.java:22071)
                      at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6602)
                      at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
                      at android.view.View.measure(View.java:22071)
                      at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6602)
                      at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1514)
                      at android.widget.LinearLayout.measureVertical(LinearLayout.java:806)
                      at android.widget.LinearLayout.onMeasure(LinearLayout.java:685)
                      at android.view.View.measure(View.java:22071)
                      at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6602)
                      at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
                      at com.android.internal.policy.DecorView.onMeasure(DecorView.java:724)
                      at android.view.View.measure(View.java:22071)
                      at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2422)
                      at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1504)
                      at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1761)
                      at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1392)
                      at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6752)
                      at android.view.Choreographer$CallbackRecord.run(Choreographer.java:911)
                      at android.view.Choreographer.doCallbacks(Choreographer.java:723)
                      at android.view.Choreographer.doFrame(Choreographer.java:658)
                      at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:897)
                      at android.os.Handler.handleCallback(Handler.java:790)
                      at android.os.Handler.dispatchMessage(Handler.java:99)
                      at android.os.Looper.loop(Looper.java:164)
                      at android.app.ActivityThread.main(ActivityThread.java:6494)
                      at java.lang.reflect.Method.invoke(Native Method)
                      at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)

我在这一行中有错误

代码语言:javascript
复制
cell = (FoldingCell) vi.inflate(R.layout.fragment_manageusers, parent, false);

我的类是这样的:

代码语言:javascript
复制
public class FoldingCellListAdapter extends ArrayAdapter<Item> {

    private HashSet<Integer> unfoldedIndexes = new HashSet<>();
    private View.OnClickListener defaultRequestBtnClickListener;

    public FoldingCellListAdapter(Context context, List<Item> objects) {
        super(context, 0, objects);
    }

    @SuppressLint("ResourceType")
    @NonNull
    @Override
    public View getView(int position, View convertView, @NonNull ViewGroup parent) {
        // get item for selected view
        Item item = getItem(position);
        // if cell is exists - reuse it, if not - create the new one from resource
        FoldingCell cell = (FoldingCell) convertView;

        ViewHolder viewHolder;
        if (cell == null) {
            viewHolder = new ViewHolder();

            //original
            LayoutInflater vi = LayoutInflater.from(getContext());
            cell = (FoldingCell) vi.inflate(R.layout.fragment_manageusers, parent, false);

            // binding view parts to view holder
            viewHolder.price = cell.findViewById(R.id.title_price);
            viewHolder.time = cell.findViewById(R.id.title_time_label);
            viewHolder.date = cell.findViewById(R.id.title_date_label);
            viewHolder.fromAddress = cell.findViewById(R.id.title_from_address);
            viewHolder.toAddress = cell.findViewById(R.id.title_to_address);
            viewHolder.requestsCount = cell.findViewById(R.id.title_requests_count);
            viewHolder.pledgePrice = cell.findViewById(R.id.title_pledge);
            viewHolder.contentRequestBtn = cell.findViewById(R.id.content_request_btn);
            cell.setTag(viewHolder);
        } else {
            // for existing cell set valid valid state(without animation)
            if (unfoldedIndexes.contains(position)) {
                cell.unfold(true);
            } else {
                cell.fold(true);
            }
            viewHolder = (ViewHolder) cell.getTag();
        }

        if (null == item)
            return cell;

        // bind data from selected element to view through view holder
        viewHolder.price.setText(item.getPrice());
        viewHolder.time.setText(item.getTime());
        viewHolder.date.setText(item.getDate());
        viewHolder.fromAddress.setText(item.getFromAddress());
        viewHolder.toAddress.setText(item.getToAddress());
        viewHolder.requestsCount.setText(String.valueOf(item.getRequestsCount()));
        viewHolder.pledgePrice.setText(item.getPledgePrice());

        // set custom btn handler for list item from that item
        if (item.getRequestBtnClickListener() != null) {
            viewHolder.contentRequestBtn.setOnClickListener(item.getRequestBtnClickListener());
        } else {
            // (optionally) add "default" handler if no handler found in item
            viewHolder.contentRequestBtn.setOnClickListener(defaultRequestBtnClickListener);
        }

        return cell;
    }


    // simple methods for register cell state changes
    public void registerToggle(int position) {
        if (unfoldedIndexes.contains(position))
            registerFold(position);
        else
            registerUnfold(position);
    }

    public void registerFold(int position) {
        unfoldedIndexes.remove(position);
    }

    public void registerUnfold(int position) {
        unfoldedIndexes.add(position);
    }

    public View.OnClickListener getDefaultRequestBtnClickListener() {
        return defaultRequestBtnClickListener;
    }

    public void setDefaultRequestBtnClickListener(View.OnClickListener defaultRequestBtnClickListener) {
        this.defaultRequestBtnClickListener = defaultRequestBtnClickListener;
    }

    // View lookup cache
    private static class ViewHolder {
        TextView price;
        TextView contentRequestBtn;
        TextView pledgePrice;
        TextView fromAddress;
        TextView toAddress;
        TextView requestsCount;
        TextView date;
        TextView time;
    }
}

我的布局是这样的:

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:id="@+id/fragment_manageusers"
    android:layout_height="wrap_content">

    <ListView xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/listUsers"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@drawable/background"
        android:clipChildren="false"
        android:clipToPadding="false"
        android:divider="@android:color/transparent"
        android:dividerHeight="10dp"
        android:paddingBottom="@dimen/activity_vertical_margin"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        android:scrollbars="none"
        tools:context=".fragment.ManageusersFragment"/>

    <com.ramotion.foldingcell.FoldingCell xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:folding-cell="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/cell"
        folding-cell:additionalFlipsCount="2"
        folding-cell:animationDuration="1300"
        folding-cell:backSideColor="@color/bgBackSideColor"
        folding-cell:cameraHeight="30">

        <!-- CONTENT (UNFOLDED) LAYOUT (MUST BE AT LEAST 2x times BIGGER than content layout bellow)-->
        <include layout="@layout/cell_content_layout" />

        <!-- TITLE (FOLDED) LAYOUT (MUST BE AT LEAST 2x times SMALLER than content layout above) -->
        <include layout="@layout/cell_title_layout" />

    </com.ramotion.foldingcell.FoldingCell>


</FrameLayout>
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51116136

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档