سؤال

لقد نفذت ListView مع رؤوس من سكليتي في مشروع منفصل وهو مثل هذا:

enter image description here

عندما نفذت onClick() في موضع قائمة شريط التمرير ، يتم عرضه في قائمة شريط التمرير بدلا من الخلفية View

enter image description here

onCreate() مقتطف الشفرة

if(position == 3)
{
    mAdapter = new MyCustomAdapter();
    mAdapter.addSeparatorItem(q.get(0).getA_name());
    mAdapter.addItem(q.get(0).getAS_name());
    for (int i = 1; i < 460; i++) { 
        if (!(q.get(i).getA_name().trim().equals(q.get(i-1).getA_name().trim()))) {
            mAdapter.addSeparatorItem(q.get(i).getA_name());
            c++;
        }
        mAdapter.addItem(q.get(i).getAS_name());
    }
    setListAdapter(mAdapter);
    toggleMenu(arg1);  
}

فئة المحول

 //Adapter Class
 private class MyCustomAdapter extends BaseAdapter {

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

        private ArrayList<String> mData = new ArrayList<String>();
        private LayoutInflater mInflater;

        private TreeSet<Integer> mSeparatorsSet = new TreeSet<Integer>();

        public MyCustomAdapter() {
            mInflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        }

        public void addItem(final String item) {
            mData.add(item);
            notifyDataSetChanged();
        }

        public void addSeparatorItem(final String item) {
            mData.add(item);
            // save separator position
            mSeparatorsSet.add(mData.size() - 1);
            notifyDataSetChanged();
        }

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

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

        public int getCount() {
            return mData.size();
        }

        public String getItem(int position) {
            return mData.get(position);
        }

        public long getItemId(int position) {
            return position;
        }

        public View getView(final int position, View convertView, ViewGroup parent) {
            ViewHolder holder = null;
            int type = getItemViewType(position);
            System.out.println("getView " + position + " " + convertView + " type = " + type);
            if (convertView == null) {
                holder = new ViewHolder();
                switch (type) {
                    case TYPE_ITEM:
                        convertView = mInflater.inflate(R.layout.activity_main1, null);
                        holder.textView = (TextView)convertView.findViewById(R.id.text);
                        holder.textView.setOnClickListener(new View.OnClickListener() {
                            @Override
                            public void onClick(View v) {
                                AlertDialog.Builder nointernetconnection = new AlertDialog.Builder(
                                        temp);
                                nointernetconnection
                                        .setIcon(R.drawable.ic_launcher)
                                        .setTitle(q.get(position-1).getAS_name())
                                        .setMessage(q.get(position-1).getDesc_art())
                                        .setCancelable(true)
                                        .setPositiveButton("OK",
                                                new DialogInterface.OnClickListener() {
                                                    @Override
                                                    public void onClick(DialogInterface arg,
                                                            int arg1) {

                                                    }
                                                });
                                AlertDialog a = nointernetconnection.create();
                                a.show();
                            }
                      });
                        break;
                    case TYPE_SEPARATOR:
                        convertView = mInflater.inflate(R.layout.activity_main2, null);
                        holder.textView = (TextView)convertView.findViewById(R.id.textSeparator);
                        break;
                }
                convertView.setTag(holder);
            } else {
                holder = (ViewHolder)convertView.getTag();
            }
            holder.textView.setText(mData.get(position));
            return convertView;
        }

    }

    public static class ViewHolder {
        public TextView textView;
    }

لذلك ، فئة ميكوستومادابتر هو ديسباليينغ القائمة في القائمة المنزلق.ولكن لا ينبغي عرض هذه القائمة في قائمة شريط التمرير بل يجب عرضها خلف قائمة شريط التمرير.آمل أن تكون المشكلة واضحة.من فضلك قل خطأي.

هل كانت مفيدة؟

المحلول

يتم استدعاء طريقة سيتليستادابتر التي تتصل بها لشريط التمرير بدلا من عرض القائمة الخاصة بك على النشاط/جزء في الخلفية.هل ListView list = (ListView) getactivity().findViewById(R.id.yourListViewName) أو شيء من هذا القبيل ، ثم قم بتعيين محول القائمة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top