ListView 基本使用
ListView 是 Android 最常用的控件之一, 允许用户通过手指上下滑动的方式将屏幕外的数据滚动到屏幕内. ListView 通过 Adapter 加载数据到屏幕上.
activity_main.xml
- xmlns:Android="http://schemas.android.com/apk/res/android"
- Android:layout_width="match_parent"
- Android:layout_height="match_parent">
- Android:id="@+id/list_view"
- Android:layout_width="match_parent"
- Android:layout_height="match_parent">
MainActivity.java
- public class MainActivity extends AppCompatActivity {
- private List<Fruit> fruitList = new ArrayList<>();
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- initFruits();
- FruitAdapter adapter = new FruitAdapter(MainActivity.this,R.layout.fruit_item,fruitList);
- ListView listView = (ListView) findViewById(R.id.list_view);
- listView.setAdapter(adapter);
- listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
- @Override
- public void onItemClick(AdapterView parent, View view, int position, long id) {
- Fruit fruit = fruitList.get(position);
- Toast.makeText(MainActivity.this,fruit.getName(),Toast.LENGTH_SHORT).show();
- }
- });
- }
- private void initFruits() {
- for(int i=0;i<2;i++) {
- Fruit apple = new Fruit("Apple",R.drawable.apple_pic);
- fruitList.add(apple);
- Fruit banana=new Fruit("Banana",R.drawable.banana_pic);
- fruitList.add(banana);
- Fruit watermelon = new Fruit("Watermelon",R.drawable.watermelon_pic);
- Fruit Pear = new Fruit("Pear",R.drawable.pear_pic);
- fruitList.add(Pear);
- Fruit Grape = new Fruit("Grape",R.drawable.grape_pic);
- fruitList.add(Grape);
- Fruit strawberry = new Fruit("Strawberry",R.drawable.strawberry_pic);
- fruitList.add(strawberry);
- Fruit mango = new Fruit("Mango",R.drawable.mango_pic);
- fruitList.add(mango);
- }
- }
- }
FruitAdapter.java 在 getView 方法中进行了 ListView 运行效率优化
- public class FruitAdapter extends ArrayAdapter<Fruit> {
- private int resourceId;
- public FruitAdapter(Context context, int textViewResourceId, List<Fruit> objects) {
- super(context, textViewResourceId,objects);
- resourceId = textViewResourceId;
- }
- @NonNull
- @Override
- public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
- Fruit fruit = getItem(position);
- View view;
- ViewHolder viewHolder;
- if (convertView == null) {
- view = LayoutInflater.from(getContext()).inflate(resourceId, parent, false);
- viewHolder = new ViewHolder();
- viewHolder.fruitImage = (ImageView) view.findViewById(R.id.fruit_image);
- viewHolder.fruitName = (TextView) view.findViewById(R.id.fruit_name);
- view.setTag(viewHolder);
- } else {
- view = convertView;
- viewHolder = (ViewHolder) view.getTag();
- }
- viewHolder.fruitImage.setImageResource(fruit.getImageId());
- viewHolder.fruitName.setText(fruit.getName());
- return view;
- }
- class ViewHolder {
- ImageView fruitImage;
- TextView fruitName;
- }
- }
Fruit.java
- public class Fruit {
- private String name;
- private int imageId;
- public Fruit(String name, int imageId) {
- this.name = name;
- this.imageId = imageId;
- }
- public String getName() {
- return name;
- }
- public int getImageId() {
- return imageId;
- }
- }
来源: http://www.bubuko.com/infodetail-2931340.html