Android studio :适配器控件
16lz
2021-01-23
Adapter:
Layout部分:
<?xml version="1.0" encoding="utf-8"?><LinearLayout 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=".MainActivity"> <ListView android:id="@+id/list" android:layout_width="match_parent" android:layout_height="match_parent"/></LinearLayout>
Java部分:
import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle;import android.widget.ArrayAdapter;import android.widget.ListView;public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); String[] strs = {"项目1","项目2","项目3","项目4","项目5"}; ArrayAdapter<String> adapter = new ArrayAdapter<String> (this,android.R.layout.simple_expandable_list_item_1,strs); ListView list_test = findViewById(R.id.list); list_test.setAdapter(adapter); }}
Spinner:
Layout部分:
<?xml version="1.0" encoding="utf-8"?><LinearLayout 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=".MainActivity"> <Spinner android:id="@+id/spacer1" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <Spinner android:id="@+id/spacer2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:spinnerMode="dialog"/></LinearLayout>
Java部分:
import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle;import android.widget.Adapter;import android.widget.ArrayAdapter;import android.widget.Spinner;public class MainActivity extends AppCompatActivity { Spinner sp1,sp2; String str[] = new String[]{"数学","英语","语文","音乐","美术","体育"}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); sp1 = findViewById(R.id.spacer1); sp2 = findViewById(R.id.spacer2); ArrayAdapter adapter = new ArrayAdapter<String> (this,android.R.layout.simple_expandable_list_item_1,str); sp1.setAdapter(adapter); sp2.setAdapter(adapter); }}
ListView2:
Layout部分:
activity_main.xml
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <ImageView android:layout_marginLeft="10dp" android:id="@+id/person_image" android:layout_width="50dp" android:layout_height="50dp" /> <TextView android:id="@+id/person_name" android:layout_marginLeft="10dp" android:textSize="20sp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:layout_toRightOf="@id/person_image"/> <CheckBox android:id="@+id/check_Box" android:layout_marginRight="10dp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerVertical="true" android:layout_alignParentRight="true" android:buttonTint="#8B8878"/></RelativeLayout>
item_layout.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content"> <Button android:id="@+id/selected_all" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="全选" android:textSize="24sp"/> <Button android:id="@+id/unselected_all" android:layout_width="0dp" android:layout_weight="1" android:layout_height="wrap_content" android:text="全不选" android:textSize="24sp"/> <Button android:id="@+id/reverse_select" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="反选" android:textSize="24sp"/> </LinearLayout> <ListView android:id="@+id/list_view" android:layout_width="match_parent" android:layout_height="match_parent"> </ListView></LinearLayout>
Java部分:
MainActivity.java
import android.app.Activity;import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.CheckBox;import android.widget.CompoundButton;import android.widget.ListView;import java.util.ArrayList;import java.util.List;import java.util.logging.Logger;public class MainActivity extends AppCompatActivity { private List<Person> mPersonList = new ArrayList<>(); private ListView mListView; private PersonAdapter mAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initPerson(); mAdapter = new PersonAdapter(MainActivity.this, mPersonList); mListView = (ListView) findViewById(R.id.list_view); mListView.setAdapter(mAdapter); Button button1 = (Button) findViewById(R.id.selected_all); Button button2 = (Button) findViewById(R.id.unselected_all); Button button3 = (Button) findViewById(R.id.reverse_select); button1.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { selectAll(v); } }); button2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { unSelectAll(v); } }); button3.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { reverseSelect(v); } }); } public void selectAll(View view){ for(Person person : mPersonList){ person.setCheck(true); } mAdapter.notifyDataSetChanged(); } public void unSelectAll(View view){ for(Person person : mPersonList){ person.setCheck(false); } mAdapter.notifyDataSetChanged(); } //反选 public void reverseSelect(View view) { for(Person person : mPersonList) { if (person.getIsCheck() == false) { person.setCheck(true); } else { person.setCheck(false); } } mAdapter.notifyDataSetChanged(); } //初始化实体类 private void initPerson() { for(int i=0; i<5; i++) { Person tom = new Person("照相机", R.drawable.p1); mPersonList.add(tom); Person kate = new Person("时钟", R.drawable.p2); mPersonList.add(kate); Person ross = new Person("游戏", R.drawable.p3); mPersonList.add(ross); } }}
Person.java
public class Person { private String name;//定义字符串 private int imageId;//定义图片ID private boolean isCheck;//电影复选框组件对象 //构造方法初始化 public Person(String name, int imageId) { this.name = name; this.imageId = imageId; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getImageId() { return imageId; } public void setImageId(int imageId) { this.imageId = imageId; } public boolean getIsCheck() { return isCheck; } public void setCheck(boolean check) { isCheck = check; }}
PersonAdapter.java
import android.content.Context;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.CheckBox;import android.widget.CompoundButton;import android.widget.ImageView;import android.widget.TextView;import java.util.List;public class PersonAdapter extends BaseAdapter { private Context mContext;//设备上下文 private List<Person> mList;//包含实体类的列表 private ViewHolder mViewHolder;//视图缓冲 //构造方法初始化 public PersonAdapter(Context mContext, List<Person> mList) { this.mContext = mContext; this.mList = mList; } @Override public int getCount() { return mList.size();//返回列表的长度 } @Override public Object getItem(int i) { return mList.get(i);//返回元素项 } @Override public long getItemId(int i) { return i;//返回元素ID } @Override public View getView(final int i, View view, ViewGroup viewGroup) { final Person person = mList.get(i);//获取到具体项 if(view == null) {//如果视图不为空再进行创建 //用LayouInflater加载布局,传给布局对象view //用view找到三个控件,存放在viewHolder中,再把viewHolder储存到View中 //完成了把控件展示在ListView的步骤 view = LayoutInflater.from(mContext).inflate(R.layout.item_layout, viewGroup, false); mViewHolder = new ViewHolder();//初始化viewHolder对象 mViewHolder.checkBox = view.findViewById(R.id.check_Box); mViewHolder.personImage = view.findViewById(R.id.person_image); mViewHolder.personName = view.findViewById(R.id.person_name); view.setTag(mViewHolder);//将ViewHolder对象加入到Tag中 }else { mViewHolder = (ViewHolder) view.getTag(); } //复选框设置改变监听事件 mViewHolder.checkBox.setOnCheckedChangeListener (new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton compoundButton, boolean b) { person.setCheck(b);//设置状态 } }); //设置具体项的内容 mViewHolder.personName.setText(person.getName()); mViewHolder.personImage.setImageResource(person.getImageId()); mViewHolder.checkBox.setChecked(person.getIsCheck()); return view;//将设置好的视图进行返回 } //holder类 class ViewHolder { ImageView personImage; TextView personName; CheckBox checkBox; }}
更多相关文章
- Android适配器之-----SimpleCursorTreeAdapter
- android 控件抖动
- Android适配器之---SimpleCursorAdapter
- Android UI控件的初识
- android保存第一次安装状态并初始化数据
- android 日期选择控件 DatePicker
- Android 双向拖动控件(类似 SeekBar)
- android之RecycleView适配器添加点击事件