listViewとそのフッターボタンでフラグメントを作成する際に問題が発生しました。私は私のListView上addFooterView()を呼び出すときに私のアプリを実行しているとき、私は次の例外を取得:私の断片(overview_tab_fragment.xml)のClassCastException listViewでaddFooterViewを呼び出してボタンを追加するとき
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.joshuaindustries.FindFun, PID: 5164
java.lang.ClassCastException: android.widget.LinearLayout$LayoutParams cannot be cast to android.widget.AbsListView$LayoutParams
at android.widget.ListView.clearRecycledState(ListView.java:545)
at android.widget.ListView.resetList(ListView.java:532)
at android.widget.ListView.layoutChildren(ListView.java:1556)
at android.widget.AbsListView.onLayout(AbsListView.java:2162)
at android.view.View.layout(View.java:17637)
at android.view.ViewGroup.layout(ViewGroup.java:5575)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1741)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1585)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1494)
at android.view.View.layout(View.java:17637)
at android.view.ViewGroup.layout(ViewGroup.java:5575)
at android.support.v4.view.ViewPager.onLayout(ViewPager.java:1767)
at android.view.View.layout(View.java:17637)
at android.view.ViewGroup.layout(ViewGroup.java:5575)
at android.support.design.widget.HeaderScrollingViewBehavior.layoutChild(HeaderScrollingViewBehavior.java:131)
at android.support.design.widget.ViewOffsetBehavior.onLayoutChild(ViewOffsetBehavior.java:42)
at android.support.design.widget.AppBarLayout$ScrollingViewBehavior.onLayoutChild(AppBarLayout.java:1364)
at android.support.design.widget.CoordinatorLayout.onLayout(CoordinatorLayout.java:846)
at android.view.View.layout(View.java:17637)
at android.view.ViewGroup.layout(ViewGroup.java:5575)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
at android.view.View.layout(View.java:17637)
at android.view.ViewGroup.layout(ViewGroup.java:5575)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1741)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1585)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1494)
at android.view.View.layout(View.java:17637)
at android.view.ViewGroup.layout(ViewGroup.java:5575)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
at android.view.View.layout(View.java:17637)
at android.view.ViewGroup.layout(ViewGroup.java:5575)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1741)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1585)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1494)
at android.view.View.layout(View.java:17637)
at android.view.ViewGroup.layout(ViewGroup.java:5575)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
at com.android.internal.policy.DecorView.onLayout(DecorView.java:726)
at android.view.View.layout(View.java:17637)
at android.view.ViewGroup.layout(ViewGroup.java:5575)
at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2346)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2068)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1254)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6337)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:874)
at android.view.Choreographer.doCallbacks(Choreographer.java:686)
at android.view.Choreographer.doFrame(Choreographer.java:621)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:860)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6119)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
レイアウトは次のようになります。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ListView
android:id="@android:id/list"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<Button
android:id="@+id/load_more_events"
android:text="@string/button_load_more_events"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_alignParentBottom="true" />
</LinearLayout>
そして、これ私のフラグメントクラス(CustomListFragment.java)のソースコードです:
package com.joshuaindustries.CustomFragments;
import com.joshuaindustries.FindFun.DetailsActivity;
import com.joshuaindustries.data.Persons;
import android.R;
import android.R.id;
import android.app.Activity;
import android.content.Intent;
import android.support.v4.app.ListFragment;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Toast;
import android.widget.AbsListView.LayoutParams;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
/**
* Created by Joshua on 21/12/2016.
*/
public class CustomListFragment extends ListFragment {
String TAG = "CustomListFragment";
private View viewRoot;
private Button loadMoreEventsButton;
private SimpleAdapter listAdapter;
private Persons personsInfo;
private List <Persons.Person> personData;
private ArrayList < HashMap < String, String > > adapterData;
private String [ ] from;
private int [ ] to;
@Override
public View onCreateView (LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
super.onCreateView (inflater, container, savedInstanceState);
Log.d (TAG, "onCreateView started");
viewRoot = inflater.inflate (com.joshuaindustries.FindFun.R.layout.overview_tab_fragment, container, false);
return (viewRoot);
}
@Override
public void onActivityCreated (Bundle savedInstanceState) {
super.onActivityCreated (savedInstanceState);
loadMoreEventsButton = (Button) viewRoot.findViewById (com.joshuaindustries.FindFun.R.id.load_more_events);
getListView ().addFooterView ((View) loadMoreEventsButton);
Log.d (TAG, "onActivityCreated: added footer view ");
}
@Override
public void onListItemClick (ListView listView, View view, int viewPosition, long rowID) {
Log.d (TAG, "viewPosition " + viewPosition);
Log.d (TAG, "rowID" + rowID);
Toast onItemClickToast = Toast.makeText (getContext (), (String) ((HashMap) listAdapter.getItem ((int) rowID)).get (from [ 0 ]), Toast.LENGTH_LONG);
onItemClickToast.show ();
Intent detailsIntent = new Intent (getContext (), DetailsActivity.class);
Persons.putInIntent (personsInfo.getPersonAtPosition ((int) rowID), detailsIntent);
startActivity (detailsIntent);
}
}
私は無駄に提案hereとhereを試してみました。あなたの助けを事前に
おかげで、 ジョシュア
他のコードを共有 – Anjali