使用setOnScrollListener时出现ClassCastException错误

时间:2017-11-27 10:46:31

标签: java android

下面是一个代码,其中数据将在滚动时出现,但是有一个错误,即 ClassCastException异常。请帮我解决这个错误。现在我已经添加了我的整个片段类Similar_Matchs_Tab,我们从服务器获取。

java.lang.ClassCastException: com.devbhoomimedia.maangal.ProfilesActivity cannot be cast to android.widget.AbsListView$OnScrollListener

public class Similar_Matchs_Tab extends Fragment  {
private ListView listView;
public Similar_Matchs_Tab() {}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    JSON_URL = "https://www.maangal.com/maangal_mobile/similar_matches.php?matri_id="+email;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

夸大此片段的布局

    View view= inflater.inflate(R.layout.matches_tab, container, false);
    listView = (ListView) view.findViewById(R.id.listView);
    listView.setOnScrollListener((AbsListView.OnScrollListener) getActivity());
    sendRequest();
    listView.setOnScrollListener(new AbsListView.OnScrollListener() {
        @Override
        public void onScrollStateChanged(AbsListView absListView, int i) {

        }

        @Override
        public void onScroll(AbsListView absListView, int i, int i1, int i2) {

        }
    });

    return view;
}

sendRequest函数来获取数据

private void sendRequest(){
    final ProgressDialog loading = ProgressDialog.show(getActivity(),"Loading Data", "Please wait...",false,false);

    StringRequest stringRequest = new StringRequest(Request.Method.POST,JSON_URL,
            new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                    loading.dismiss();
                    showJSON(response);
                    Log.e("Similar MAtches******",response);
                }
            },
            new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    Toast.makeText(getContext(),error.getMessage(), Toast.LENGTH_LONG).show();
                }
            });
    int MY_SOCKET_TIMEOUT_MS = 30000;
    stringRequest.setRetryPolicy(new DefaultRetryPolicy(
            MY_SOCKET_TIMEOUT_MS, DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
            DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));

    RequestQueue requestQueue = Volley.newRequestQueue(getContext());
    requestQueue.add(stringRequest);
}
protected void showJSON(String json){
    ParseJSON pj = new ParseJSON(json);
    pj.parseJSON();
    Profile_Match_custom_List cl = new Profile_Match_custom_List(getActivity(), ParseJSON.ids,ParseJSON.ages, ParseJSON.heights, ParseJSON.communities,ParseJSON.castes,ParseJSON.educations,ParseJSON.occupations,ParseJSON.incomes,ParseJSON.pics,ParseJSON.locations,ParseJSON.shortlist,ParseJSON.expressinterest);
    listView.setAdapter(cl);
  }
}

4 个答案:

答案 0 :(得分:2)

B&#39;因为你将Activity转换为AbsListView.OnScrollListener接口,这就是你获得classCastException的原因。

只需删除listView.setOnScrollListener((AbsListView.OnScrollListener) getActivity());

即可

并替换

listView.setOnScrollListener((ProfileActivity) getActivity());

答案 1 :(得分:1)

您之所以收到此错误,是因为您尝试将活动投射到滚动侦听器,这是不可能的。所以要解决问题只需设置适当的接口,它应该工作。将listView.setOnScrollListener((AbsListView.OnScrollListener) getActivity());替换为:

    lv.setOnScrollListener(new AbsListView.OnScrollListener() {
        @Override
        public void onScrollStateChanged(AbsListView absListView, int i) {

        }

        @Override
        public void onScroll(AbsListView absListView, int i, int i1, int i2) {

        }
    });

答案 2 :(得分:0)

改变它

listView.setOnScrollListener((AbsListView.OnScrollListener) getActivity());     

listView.setOnScrollListener((ProfileActivity)getActivity());

ProfileActivity必须实现AbsListView.OnScrollListener

答案 3 :(得分:0)

您的活动未实现AbsListView.OnScrollListener接口。