简体   繁体   中英

how to main position of listview while scrolling in android

I Used Base adapter for listview, and while scrolling ,positon changes., how to over come this, And this was my Base Adapter Class.

Hello,

I Used Base adapter for listview, and while scrolling ,positon

changes., how to over come this, And this was my Base Adapter Class.

    public class MyCustomBaseAdapter extends BaseAdapter {
        MyCustomBaseAdapter custom;
        private OnClickListener onCheckClick;
        private OnCheckedChangeListener OnTextClick;
        Context context;
        ViewHolder holder;

        public void setOnClickListeners(OnClickListener 

onCheckClick) {
            // TODO Auto-generated method stub
            this.onCheckClick = onCheckClick;
        }

        public void setOnCheckedChangeListener

(OnCheckedChangeListener OnTextClick) {
            // TODO Auto-generated method stub
            this.OnTextClick = OnTextClick;
        }
         private static ArrayList<SearchResults> searchArrayList;

         private LayoutInflater mInflater;

         public MyCustomBaseAdapter(Context context, 

ArrayList<SearchResults> results) {
            this.context = context;
             searchArrayList = results;
             mInflater = LayoutInflater.from(context);
         }

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

         public Object getItem(int position) {
          return searchArrayList.get(position);
         }

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

         public View getView(final int position, View convertView, 

ViewGroup parent) {

          SearchResults planet = (SearchResults) this.getItem( 

position ); 

          if (convertView == null) {

           convertView = mInflater.inflate

(R.layout.custom_row_view, null);

           holder = new ViewHolder();

           holder.txtName = (TextView) 

convertView.findViewById(R.id.mobileNumber);
           holder.txtCityState = (TextView) 

convertView.findViewById(R.id.messageContent);
           holder.id_txtView = (TextView) 

convertView.findViewById(R.id.id_textView);
           holder.checkBox = (CheckBox) 

convertView.findViewById(R.id.checkBox1);
           holder.datetime = (TextView) 

convertView.findViewById(R.id.date_time);
           holder.type = (TextView) convertView.findViewById

(R.id.type);
           holder.custom_layout = (LinearLayout) 

convertView.findViewById(R.id.custom_layout);     

           holder.checkBox.setOnClickListener(new 

OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method 

stub
                ((SMS)context).function(position);  
            }
        });
           holder.checkBox .setTag(Integer.valueOf(position));
           convertView.setTag(holder);

          }
          else
          {
           holder = (ViewHolder) convertView.getTag();
          }

          holder.txtName.setText(searchArrayList.get

(position).getName());
          holder.txtCityState.setText(searchArrayList.get

(position).getCityState());
          holder.id_txtView.setText(searchArrayList.get

(position).getPhone());
          holder.datetime.setText(searchArrayList.get

(position).getDatetime());

          //holder.type.setText(searchArrayList.get

(position).getType());

          holder.checkBox .setTag(Integer.valueOf(position));   

          //(2).This line is for avoiding checkbox selection for 

other checkboxess
          /*holder.checkBox.setChecked(planet.isChecked() );*/

          holder.checkBox.setOnCheckedChangeListener

(OnTextClick);  

          holder.checkBox.setChecked(searchArrayList.get

(position).isSelected());     

          return convertView;
         }

         static class ViewHolder {
          TextView txtName;
          TextView txtCityState;
          TextView id_txtView;
          CheckBox checkBox;
          TextView datetime;
          TextView type;
          LinearLayout custom_layout;
          LinearLayout main_layout;
          TextView empty_txt_msg;

         }

         Integer[] imgid = { 
                    R.drawable.ic_launcher, 
                    R.drawable.ic_launcher, 
                };
    }

Please help me overcome this.

you can use listview method setOnScrollListener

you every time you scroll you can get firstvisible position, lastvisible position and totalnumber of position.now you can Use it in your code.

 listview.setOnScrollListener(new OnScrollListener() {
        @Override
        public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
            //get the showed item num, and if its equal to total, you can hide the view
            //get a reference to your viewid
            //viewid.setVisibility(View.GONE);
        }
        @Override
        public void onScrollStateChanged(AbsListView view, int scrollState) {
        }
    });

EDITED : Inside you adapter in getview method you can specify the below code :

holder.chkselect = (CheckBox) convertView
                .findViewById(R.id.txtselect);
    holder.chkselect.setTag(position);
    holder.chkselect.setOnCheckedChangeListener(new OnCheckedChangeListener() {@Override
public void onCheckedChanged(CompoundButton buttonView,
        boolean isChecked) {
    if (isChecked) {

        int position = Integer.parseInt(buttonView.getTag()
                .toString());
        OrderDetail.acceptposition.add(String
                .valueOf(position));
    } else {
        int position = Integer.parseInt(buttonView.getTag()
                .toString());

        if (OrderDetail.acceptposition.contains(String
                .valueOf(position))) {
            OrderDetail.acceptposition.remove(String
                    .valueOf(position));
        }
    }

}

});

HERE in ArralyList acceptposition you have all the checked positions. try it.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM