// Path: Chatting/src/cn/jmessage/android/uikit/chatting/utils/IdHelper.java
// public class IdHelper {
// 
//     public static int getLayout(Context context, String layoutName) {
//         return context.getResources().getIdentifier(layoutName, "layout",
//                 context.getApplicationContext().getPackageName());
//     }
// 
//     public static int getViewID(Context context, String IDName) {
//         return context.getResources().getIdentifier(IDName, "id",
//                 context.getApplicationContext().getPackageName());
//     }
// 
//     public static int getDrawable(Context context, String drawableName) {
//         return context.getResources().getIdentifier(drawableName, "drawable",
//                 context.getApplicationContext().getPackageName());
//     }
// 
//     public static int getAttr(Context context, String attrName) {
//         return context.getResources().getIdentifier(attrName, "attr",
//                 context.getApplicationContext().getPackageName());
//     }
// 
//     public static int getString(Context context, String stringName) {
//         return context.getResources().getIdentifier(stringName, "string",
//                 context.getApplicationContext().getPackageName());
//     }
// 
//     public static int getStyle(Context context, String styleName) {
//         return context.getResources().getIdentifier(styleName, "style",
//                 context.getApplicationContext().getPackageName());
//     }
// 
//     public static int[] getResourceDeclareStyleableIntArray(Context context, String name) {
//         try {
//             Field[] fields2 = Class.forName(context.getPackageName() + ".R$styleable").getFields();
// 
//             //browse all fields
//             for (Field f : fields2) {
//                 //pick matching field
//                 if (f.getName().equals(name)) {
//                     //return as int array
//                     return (int[]) f.get(null);
//                 }
//             }
//         } catch (Throwable t) {
//             t.printStackTrace();
//         }
// 
//         return null;
//     }
// 
//     public static int getAnim(Context context, String animName) {
//         return context.getResources().getIdentifier(animName, "anim",
//                 context.getApplicationContext().getPackageName());
//     }
// }


import android.content.Context;
import android.content.res.TypedArray;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AbsListView;
import android.widget.AbsListView.OnScrollListener;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.ProgressBar;
import android.widget.RelativeLayout;
import cn.jmessage.android.uikit.chatting.utils.IdHelper;
        super(context, attrs, defStyle);
        getAttrs(context, attrs);
        init(context);
    }

    private void init(Context context) {
        this.context = context;
        initDropDownStyle();

        // should set, to run onScroll method and so on
        super.setOnScrollListener(this);
    }

    /**
     * init drop down style, only init once
     */
    private void initDropDownStyle() {
        if (headerLayout != null) {
            if (isDropDownStyle) {
                addHeaderView(headerLayout);
            } else {
                removeHeaderView(headerLayout);
            }
            return;
        }
        if (!isDropDownStyle) {
            return;
        }

        LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
// Path: Chatting/src/cn/jmessage/android/uikit/chatting/utils/IdHelper.java
// public class IdHelper {
// 
//     public static int getLayout(Context context, String layoutName) {
//         return context.getResources().getIdentifier(layoutName, "layout",
//                 context.getApplicationContext().getPackageName());
//     }
// 
//     public static int getViewID(Context context, String IDName) {
//         return context.getResources().getIdentifier(IDName, "id",
//                 context.getApplicationContext().getPackageName());
//     }
// 
//     public static int getDrawable(Context context, String drawableName) {
//         return context.getResources().getIdentifier(drawableName, "drawable",
//                 context.getApplicationContext().getPackageName());
//     }
// 
//     public static int getAttr(Context context, String attrName) {
//         return context.getResources().getIdentifier(attrName, "attr",
//                 context.getApplicationContext().getPackageName());
//     }
// 
//     public static int getString(Context context, String stringName) {
//         return context.getResources().getIdentifier(stringName, "string",
//                 context.getApplicationContext().getPackageName());
//     }
// 
//     public static int getStyle(Context context, String styleName) {
//         return context.getResources().getIdentifier(styleName, "style",
//                 context.getApplicationContext().getPackageName());
//     }
// 
//     public static int[] getResourceDeclareStyleableIntArray(Context context, String name) {
//         try {
//             Field[] fields2 = Class.forName(context.getPackageName() + ".R$styleable").getFields();
// 
//             //browse all fields
//             for (Field f : fields2) {
//                 //pick matching field
//                 if (f.getName().equals(name)) {
//                     //return as int array
//                     return (int[]) f.get(null);
//                 }
//             }
//         } catch (Throwable t) {
//             t.printStackTrace();
//         }
// 
//         return null;
//     }
// 
//     public static int getAnim(Context context, String animName) {
//         return context.getResources().getIdentifier(animName, "anim",
//                 context.getApplicationContext().getPackageName());
//     }
// }


// Path: Chatting/src/cn/jmessage/android/uikit/chatting/DropDownListView.java
import android.content.Context;
import android.content.res.TypedArray;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AbsListView;
import android.widget.AbsListView.OnScrollListener;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.ProgressBar;
import android.widget.RelativeLayout;
import cn.jmessage.android.uikit.chatting.utils.IdHelper;

        super(context, attrs, defStyle);
        getAttrs(context, attrs);
        init(context);
    }

    private void init(Context context) {
        this.context = context;
        initDropDownStyle();

        // should set, to run onScroll method and so on
        super.setOnScrollListener(this);
    }

    /**
     * init drop down style, only init once
     */
    private void initDropDownStyle() {
        if (headerLayout != null) {
            if (isDropDownStyle) {
                addHeaderView(headerLayout);
            } else {
                removeHeaderView(headerLayout);
            }
            return;
        }
        if (!isDropDownStyle) {
            return;
        }

        LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        headerLayout = (RelativeLayout) inflater.inflate(IdHelper.getLayout(context, "jmui_drop_down_list_header"),