qq_23970651 2015-08-14 12:12 采纳率: 50%
浏览 1755
已结题

adapter无法绑定数据,get(poiniton)无法获取到数据

要实现一个像通讯录一样的listview图片说明


public class MyDistributor2Activity extends BaseActivity {

    @InjectView(R.id.my_distributor_lv)
    PinnedHeaderNoScrollListViewTest distributor_lv;

    LayoutInflater layoutInflater;

    MyDistributor2 MyDistributor2;

    DistributorPinnedHeaderAdapter distributorAdapter;

    RequestQueue queue;

    MyDistributor2 distributor;

    // unsorted list items
    ArrayList<MyDistributor2> mItems = new ArrayList<MyDistributor2>();

    // array list to store section positions
    ArrayList<Integer> mListSectionPos;

    // array list to store listView data
    ArrayList<MyDistributor2> mListItems;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.sec_my_distributor_list2);

        ButterKnife.inject(this);

        // Array to ArrayList
        mListSectionPos = new ArrayList<Integer>();

        mListItems = new ArrayList<MyDistributor2>();

        queue = VolleyQuery.getQueue(this);

        layoutInflater = LayoutInflater.from(this);

        getDate("first");

        findDistributor();

    }




  //===查询得到到的数据,删除了部分代码
    public void getDate(final String method) {

        url = ConfigStr.api_base + "myself/myDistributor";

        StringUTF8Request request = new StringUTF8Request(
                Request.Method.POST,
                url,
                new Response.Listener<String>() {
                    @Override
                    public void onResponse(String response) {

                        dialog.dismiss();

                        byte[] bytes = Base64.decode(response, Base64.DEFAULT);

                        String result = new String(bytes);

                        Log.d("result_add", result);
                        try {
                            JSONObject jsonObject = new JSONObject(result);

                            String json = jsonObject.getString("RS100065");

                            Gson gson = new Gson();

                                mItems = gson.fromJson(json, new TypeToken<List<MyDistributor2>>() {
                                }.getType());

                                new Poplulate().execute(mItems);


                        } catch (Exception e) {
/                           
                        }

                    }
                },

        queue.add(request);
    }


    private void setAdapter(ArrayList<MyDistributor2> myDistributor2) {

        distributorAdapter = new DistributorPinnedHeaderAdapter(MyDistributor2Activity.this, myDistributor2, mListSectionPos);

         distributor_lv.setAdapter(distributorAdapter);

    }


    // sort array and extract sections in background Thread here we use
    // AsyncTask
    private class Poplulate extends AsyncTask<ArrayList<MyDistributor2>, ArrayList<MyDistributor2>, ArrayList<MyDistributor2>> {

        private void showLoading(View contentView) {
            contentView.setVisibility(View.GONE);
        }

        private void showContent(View contentView) {
            contentView.setVisibility(View.VISIBLE);
        }

        private void showEmptyText(View contentView) {
            contentView.setVisibility(View.GONE);
        }

        @Override
        protected void onPreExecute() {
            showLoading(distributor_lv); 
            super.onPreExecute();
        }

        @Override
        protected ArrayList<MyDistributor2> doInBackground(ArrayList<MyDistributor2>... params) {

            return cacalation(params[0]);
        }

        @Override
        protected void onPostExecute(ArrayList<MyDistributor2> result) {
            if (!isCancelled()) {
                if (result.size() <= 0) {
                    showEmptyText(distributor_lv);
                } else {
                    showContent(distributor_lv);
                }

                setAdapter(result);
            }
            super.onPostExecute(result);
        }
    }

    public class SortIgnoreCase implements Comparator<MyDistributor2> {
        public int compare(MyDistributor2 s1, MyDistributor2 s2) {
            return s1.getInvite_code().compareToIgnoreCase(s2.getInvite_code());
        }
    }


}






public class DistributorPinnedHeaderAdapter extends BaseAdapter implements /*OnScrollListener,*/ IPinnedHeader, Filterable {

    private static final int TYPE_ITEM = 0;
    private static final int TYPE_SECTION = 1;
    private static final int TYPE_MAX_COUNT = TYPE_SECTION + 1;

    private static String mem_letter;

    private Filter filter;

    Context mContext;

    LayoutInflater mLayoutInflater;

    int mCurrentSectionPosition = 0, mNextSectionPostion = 0;

    // array list to store section positions
    ArrayList<Integer> mListSectionPos;

    ArrayList<MyDistributor2> mListItems;

    BottomPopUp bottomPopUp2;


    public DistributorPinnedHeaderAdapter(Context context, ArrayList<MyDistributor2> listItems, ArrayList<Integer> listSectionPos) {
        this.mContext = context;
        this.mListItems = listItems;
        this.mListSectionPos = listSectionPos;
        mLayoutInflater = LayoutInflater.from(mContext);
    }

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

    @Override
    public boolean areAllItemsEnabled() {
        return false;
    }

    @Override
    public boolean isEnabled(int position) {
        return !mListSectionPos.contains(position);
    }

    @Override
    public int getViewTypeCount() {
        return TYPE_MAX_COUNT;
    }

    @Override
    public int getItemViewType(int position) {
        return mListSectionPos.contains(position) ? TYPE_SECTION : TYPE_ITEM;
    }

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

    @Override
    public long getItemId(int position) {
        return mListItems.get(position).hashCode();
    }


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

        ViewHolder holder = null;

        if (convertView == null) {

            holder = new ViewHolder();

            int type = getItemViewType(position);

            switch (type) {
                case TYPE_ITEM://内容部分

                    convertView = mLayoutInflater.inflate(R.layout.sec_my_distributor_list_item, null);

                    holder.text_name = (TextView) convertView.findViewById(R.id.my_distributor_item_text_name);

                    holder.text_tel = (TextView) convertView.findViewById(R.id.my_distributor_item_text_tel);

                    holder.text_mshopname = (TextView) convertView.findViewById(R.id.my_distributor_item_text_mshopname);

                    break;
                case TYPE_SECTION://头部分类部分

                    convertView = mLayoutInflater.inflate(R.layout.section_row_view, null);

                    break;
            }



            convertView.setTag(holder);

        } else {

            if(convertView.getTag() instanceof ViewHolder){

                holder = (ViewHolder) convertView.getTag();

            }else{

                holder=new ViewHolder();

                int type = getItemViewType(position);

                switch (type) {
                    case TYPE_ITEM:

                        convertView = mLayoutInflater.inflate(R.layout.sec_my_distributor_list_item, null);



                        holder.text_name = (TextView) convertView.findViewById(R.id.my_distributor_item_text_name);

                        holder.text_tel = (TextView) convertView.findViewById(R.id.my_distributor_item_text_tel);

                        holder.text_mshopname = (TextView) convertView.findViewById(R.id.my_distributor_item_text_mshopname);


                        break;
                    case TYPE_SECTION:

                        convertView = mLayoutInflater.inflate(R.layout.section_row_view, null);

                        break;
                }

            }
        }


        //===设置列表内容各项值

        MyDistributor2 distributor = mListItems.get(position);//此处无法获得数据,下面的控件无法绑定数据?

        holder.text_name.setText(distributor.getStaff_real_name());
        holder.text_tel.setText(distributor.getStaff_partner_phonenum());
       holder.text_mshopname.setText(distributor.getStaff_departments_name());


        return convertView;
    }

    @Override
    public int getPinnedHeaderState(int position) {

        if (getCount() == 0 || position < 0 || mListSectionPos.indexOf(position) != -1) {
            return PINNED_HEADER_GONE;
        }

        mNextSectionPostion = getNextSectionPosition(mCurrentSectionPosition);
        if (mNextSectionPostion != -1 && position == mNextSectionPostion - 1) {
            return PINNED_HEADER_PUSHED_UP;
        }

        return PINNED_HEADER_VISIBLE;
    }


    public int getNextSectionPosition(int currentSectionPosition) {
        int index = mListSectionPos.indexOf(currentSectionPosition);
        if ((index + 1) < mListSectionPos.size()) {
            return mListSectionPos.get(index + 1);
        }
        return mListSectionPos.get(index);
    }

    public static class ViewHolder {
        public TextView textView;

        public TextView sub_textView;

        TextView text_name;

        TextView text_tel;

        TextView text_mshopname;

    }


}

  • 写回答

6条回答 默认 最新

  • qq_23970651 2015-08-14 12:13
    关注

    activity完整代码

     public class MyDistributor2Activity extends BaseActivity {
    
        @InjectView(R.id.my_distributor_lv)
        PinnedHeaderNoScrollListViewTest distributor_lv;
    
        LayoutInflater layoutInflater;
    
        MyDistributor2 MyDistributor2;
    
        DistributorPinnedHeaderAdapter distributorAdapter;
    
        RequestQueue queue;
    
        MyDistributor2 distributor;
    
        // unsorted list items
        ArrayList<MyDistributor2> mItems = new ArrayList<MyDistributor2>();
    
        // array list to store section positions
        ArrayList<Integer> mListSectionPos;
    
        // array list to store listView data
        ArrayList<MyDistributor2> mListItems;
    
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
    
            setContentView(R.layout.sec_my_distributor_list2);
    
            ButterKnife.inject(this);
    
            // Array to ArrayList
            mListSectionPos = new ArrayList<Integer>();
    
            mListItems = new ArrayList<MyDistributor2>();
    
            queue = VolleyQuery.getQueue(this);
    
            layoutInflater = LayoutInflater.from(this);
    
            getDate("first");
    
            findDistributor();
    
        }
    
    
    
    
      //===查询得到到的数据,删除了部分代码
        public void getDate(final String method) {
    
            url = ConfigStr.api_base + "myself/myDistributor";
    
            StringUTF8Request request = new StringUTF8Request(
                    Request.Method.POST,
                    url,
                    new Response.Listener<String>() {
                        @Override
                        public void onResponse(String response) {
    
                            dialog.dismiss();
    
                            byte[] bytes = Base64.decode(response, Base64.DEFAULT);
    
                            String result = new String(bytes);
    
                            Log.d("result_add", result);
                            try {
                                JSONObject jsonObject = new JSONObject(result);
    
                                String json = jsonObject.getString("RS100065");
    
                                Gson gson = new Gson();
    
                                    mItems = gson.fromJson(json, new TypeToken<List<MyDistributor2>>() {
                                    }.getType());
    
                                    new Poplulate().execute(mItems);
    
    
                            } catch (Exception e) {
    /                           
                            }
    
                        }
                    },
    
            queue.add(request);
        }
    
    
        private void setAdapter(ArrayList<MyDistributor2> myDistributor2) {
    
            distributorAdapter = new DistributorPinnedHeaderAdapter(MyDistributor2Activity.this, myDistributor2, mListSectionPos);
    
             distributor_lv.setAdapter(distributorAdapter);
    
        }
    
    
        // sort array and extract sections in background Thread here we use
        // AsyncTask
        private class Poplulate extends AsyncTask<ArrayList<MyDistributor2>, ArrayList<MyDistributor2>, ArrayList<MyDistributor2>> {
    
            private void showLoading(View contentView) {
                contentView.setVisibility(View.GONE);
            }
    
            private void showContent(View contentView) {
                contentView.setVisibility(View.VISIBLE);
            }
    
            private void showEmptyText(View contentView) {
                contentView.setVisibility(View.GONE);
            }
    
            @Override
            protected void onPreExecute() {
                showLoading(distributor_lv); 
                super.onPreExecute();
            }
    
            @Override
            protected ArrayList<MyDistributor2> doInBackground(ArrayList<MyDistributor2>... params) {
    
                return cacalation(params[0]);
            }
    
            @Override
            protected void onPostExecute(ArrayList<MyDistributor2> result) {
                if (!isCancelled()) {
                    if (result.size() <= 0) {
                        showEmptyText(distributor_lv);
                    } else {
                        showContent(distributor_lv);
                    }
    
                    setAdapter(result);
                }
                super.onPostExecute(result);
            }
        }
    
        public class SortIgnoreCase implements Comparator<MyDistributor2> {
            public int compare(MyDistributor2 s1, MyDistributor2 s2) {
                return s1.getInvite_code().compareToIgnoreCase(s2.getInvite_code());
            }
        }
    
        private ArrayList<MyDistributor2> cacalation(ArrayList<MyDistributor2>... params) {
    
            ArrayList<MyDistributor2> myDistributor2 = new ArrayList<>();
    
            mListSectionPos.clear();
    
            ArrayList<MyDistributor2> items = params[0];
    
            if (mItems.size() > 0) {
    
                // NOT forget to sort array
                Collections.sort(items, new SortIgnoreCase());
    
                String prev_section = "";
    
                for (MyDistributor2 current_item : items) {// Invite_code--首字母
    
                    String current_section = current_item.getInvite_code().toUpperCase(Locale.getDefault());
    
                    if (!prev_section.equals(current_section)) {
    
                        MyDistributor2 myDistributor2_test = new MyDistributor2();
    
                        myDistributor2_test.setInvite_code(current_section);
    
                        myDistributor2.add(myDistributor2_test);
    
                        myDistributor2.add(current_item);
    
                        // array list of section positions
                        mListSectionPos.add(myDistributor2.indexOf(myDistributor2_test));
    
                        prev_section = current_section;
    
                    } else {
    
                        myDistributor2.add(current_item);
                    }
                }
    
            }
            return myDistributor2;
        }
    
    
    }
    
    
    评论

报告相同问题?