0

I have adapter and retrieving the details into listview

private class ChatDisplayAdapter extends BaseAdapter {

        private LayoutInflater mInflater;

        public ChatDisplayAdapter() {
            mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        }
        private class ViewHolder {

            TextView chatTitle;
            TextView chatPlace;
            TextView chatDate;
            TextView notificationCount;

        }


        @Override
        public int getCount() {
            return groupEventMoList.size();
        }

        @Override
        public Object getItem(int position) {
            return groupEventMoList.get(position);
        }

        @Override
        public long getItemId(int id) {
            // for sqllite management
            return 0;
        }


        @Override
        public View getView(final int position, View convertView, ViewGroup parent) {

            ViewHolder holder = null;
            if (convertView == null) {
                convertView = mInflater.inflate(R.layout.chatwindow, null);
                holder = new ViewHolder();
                convertView.setClickable(true);
                convertView.setFocusable(true);

                holder.chatTitle = (TextView) convertView.findViewById(R.id.chat_title);
                holder.chatPlace = (TextView) convertView.findViewById(R.id.event_place);
                holder.chatDate = (TextView) convertView.findViewById(R.id.event_date);
                holder.notificationCount = (TextView) convertView.findViewById(R.id.notification_count);
                holder.chatPlace.setTextColor(getResources().getColor(R.color.black));
                holder.chatDate.setTextColor(getResources().getColor(R.color.black));
                holder.chatTitle.setTextColor(getResources().getColor(R.color.black));
                holder.notificationCount.setTextColor(getResources().getColor(R.color.black));
                convertView.setTag(holder);
                //Log.e("view", "holder" + convertView.getTag());
            }
            else {

              //  Log.e("view", "holder" + convertView.getTag());
                holder = (ViewHolder) convertView.getTag();
              //  Log.e("view", "holder" + holder);

            }

           // holder = (ViewHolder) convertView.getTag();
            convertView.setTag(groupEventMoList.get(position));
            holder.chatPlace.setText(groupEventMoList.get(position).getPlace());
            holder.notificationCount.setText(Integer.toString(groupEventMoList.get(position).getCount()));
            holder.chatTitle.setText(groupEventMoList.get(position).getText());

            String actualDate = groupEventMoList.get(position).getEventDate();
            Log.e("view", "notification" + groupEventMoList.get(position).getCount());
            Log.e("view", "after notification position" + position);
            try {
                //date format changed here
                Date formatDate = new SimpleDateFormat("yyyy-MM-dd").parse(actualDate);
                dateResult = new SimpleDateFormat("dd-MM-yyyy").format(formatDate);
                holder.chatDate.setText(dateResult);
            } catch (ParseException e) {

                e.printStackTrace();
            }

            Log.e("view", "position" + groupEventMoList.get(position).getPlace());

            final EventMO eventMO = groupEventMoList.get(position);
            convertView.setTag(position);
            View v = convertView.findViewById(R.id.chat_window_single);
            v.getRootView().setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Log.i("position", v.getTag().toString());
                    Intent groupAct = new Intent(context, GroupChatActivity.class);
                    groupAct.putExtra("eventMo", eventMO);
                    groupAct.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                    startActivity(groupAct);

                }

            });


            return convertView;
        }

    }

}

this is my log

12-30 17:19:54.324  17652-17652/com.ringee.app E/AndroidRuntime﹕ FATAL EXCEPTION: main
    java.lang.ClassCastException: java.lang.Integer cannot be cast to com.ringee.app.GroupChatFragment$ChatDisplayAdapter$ViewHolder
            at com.ringee.app.GroupChatFragment$ChatDisplayAdapter.getView(GroupChatFragment.java:345)

I have the error exactly at else part. how to fix this issue

I am getting error near this line : holder = (ViewHolder) convertView.getTag(); and holder returns as 0

klaymen
  • 237
  • 2
  • 10

1 Answers1

1

You are setting the view tag three times. Notice the lines:

convertView.setTag(holder);
...
convertView.setTag(groupEventMoList.get(position));
...
convertView.setTag(position);

With the last line, you are setting an Integer as a tag and thats why you get ClassCastException. Remove the excess setTags and leave only the first, correct one.

Similar cases here and here.

Community
  • 1
  • 1
Rafal Zawadzki
  • 963
  • 6
  • 15