How to select item in the list view programmatically

后端 未结 2 1667
温柔的废话
温柔的废话 2021-01-28 06:29

I have an ArrayList List which contains some items from the listview all_list. How can I select these items in the list view all_list programmatically

2条回答
  •  忘掉有多难
    2021-01-28 07:24

    Try this

    MainActivity.java

    package com.example.multiseekbar;
    
    import java.util.ArrayList;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.AdapterView;
    import android.widget.AdapterView.OnItemClickListener;
    import android.widget.ListView;
    
    
    public class MainActivity extends Activity {
    
        ListView listView1;
    
        ArrayList modelClass = new ArrayList();
        FruitSelectAdapter adapter;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            modelClass.add(new ModelClass("Orange", true));
            modelClass.add(new ModelClass("Apple", false));
            modelClass.add(new ModelClass("Banana", false));
            modelClass.add(new ModelClass("Grapes", false));
    
            listView1 = (ListView) findViewById(R.id.listView1);
            adapter = new FruitSelectAdapter(MainActivity.this, modelClass);
            listView1.setAdapter(adapter);
    
            listView1.setOnItemClickListener(new OnItemClickListener() {
    
                @Override
                public void onItemClick(AdapterView arg0, View arg1, int arg2,
                        long arg3) {
                    // TODO Auto-generated method stub
                    if(modelClass.get(arg2).isSelected()){
                        modelClass.get(arg2).setSelected(false);
                    }else{
                        modelClass.get(arg2).setSelected(true);
                    }
    
                    adapter.notifyDataSetChanged();
                }
            });
    
    
        }
    
    }
    

    activity_main.xml

    
    
        
        
    
    
    

    FruitSelectAdapter.java

    package com.example.multiseekbar;
    
    import java.util.ArrayList;
    
    import android.app.Activity;
    import android.content.Context;
    import android.graphics.Color;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.BaseAdapter;
    import android.widget.CheckBox;
    import android.widget.LinearLayout;
    import android.widget.TextView;
    
    public class FruitSelectAdapter extends BaseAdapter
    {
    
        private Activity activity;
        private LayoutInflater inflater;
    
        private ArrayList modelClass=null;
    
        public FruitSelectAdapter(Activity activity, ArrayList modelClass) {
            this.activity = activity;
            this.modelClass = modelClass;
        }
    
    
        @Override
        public int getCount() {
            // TODO Auto-generated method stub
            return modelClass.size();
        }
        @Override
        public Object getItem(int position) {
            // TODO Auto-generated method stub
            return modelClass.get(position);
        }
        @Override
        public long getItemId(int position) {
            // TODO Auto-generated method stub
            return position;
        }
        @Override
        public View getView(final int position, View convertView, ViewGroup parent) {
            // TODO Auto-generated method stub
            final ViewHolder holder;    
            if (inflater == null)
                inflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    
            if (convertView == null) {
                holder =new ViewHolder();
                convertView = inflater.inflate(R.layout.row1, null);            
                holder.txtFruitName = (TextView)convertView.findViewById(R.id.txtFruitName);
                holder.cbFruitSelectStatus = (CheckBox)convertView.findViewById(R.id.cbFruitSelectStatus);
                holder.linLayBackground = (LinearLayout) convertView.findViewById(R.id.linLayBackground);
                convertView.setTag(holder);
            }else{
                holder = (ViewHolder)convertView.getTag();
            }
    
            holder.txtFruitName.setText(modelClass.get(position).getFruitName());
            holder.cbFruitSelectStatus.setChecked(modelClass.get(position).isSelected());
    
            if(modelClass.get(position).isSelected()){
                holder.linLayBackground.setBackgroundColor(Color.parseColor("#80ccff"));
            }else{
                holder.linLayBackground.setBackgroundColor(Color.parseColor("#FFFFFF"));
            }
    
            return convertView;
        }
    
        class ViewHolder{       
            TextView txtFruitName;
            CheckBox cbFruitSelectStatus;
            LinearLayout linLayBackground;
        }
    
    }
    

    row1.xml

    
    
    
        
    
    
        
    
    
    

    ModelClass.java

    package com.example.multiseekbar;
    
    public class ModelClass {
    
        String fruitName;
        boolean isSelected=false;
    
        public ModelClass(String fruitName, boolean isSelected) {
            this.fruitName = fruitName;
            this.isSelected = isSelected;
        }
    
        public String getFruitName() {
            return fruitName;
        }
    
        public void setFruitName(String fruitName) {
            this.fruitName = fruitName;
        }
    
        public boolean isSelected() {
            return isSelected;
        }
    
        public void setSelected(boolean isSelected) {
            this.isSelected = isSelected;
        }
    
    
    }
    

提交回复
热议问题