How to select item in the list view programmatically

后端 未结 2 1647
温柔的废话
温柔的废话 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:22

    set an onItemClickListener to the listview such that on click, you set a boolean flag that sets the checkbox in each row to selected. then call notifyDataSetChanged()

    0 讨论(0)
  • 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> modelClass = new ArrayList<ModelClass>();
        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

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context="com.example.multiseekbar.MainActivity" >
    
        <ListView
            android:id="@+id/listView1"
            android:layout_width="match_parent"
            android:layout_height="fill_parent"
             >
        </ListView>
    
    </RelativeLayout>
    

    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> modelClass=null;
    
        public FruitSelectAdapter(Activity activity, ArrayList<ModelClass> 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

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:id="@+id/linLayBackground"
        android:layout_height="70dp"
        android:orientation="horizontal"
         >
    
        <TextView 
            android:id="@+id/txtFruitName"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:text="Fruit name"
            android:layout_weight="1"
            android:textSize="16sp"
            android:textColor="#000000" />
    
    
        <CheckBox 
            android:id="@+id/cbFruitSelectStatus"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:clickable="false"
            android:focusable="false"
            android:focusableInTouchMode="false" />
    
    </LinearLayout>
    

    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;
        }
    
    
    }
    
    0 讨论(0)
提交回复
热议问题