最常用的组件ListView

最常用的组件之一ListView

1. 最简单的使用方法–只显示文本数据

Strings.xml中添加一组String-array 列表

  <string-array name="items"> //定义数据列表名为items
    <item >第一条数据</item>
    <item >我是第二条 </item>
    <item >我叫黄干</item>
    <item >ListView列表</item>              
</string-array>

Layout页面插入一个ListView

<ListView
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:id="@+id/list_view" 
  android:entries="@array/items"  /> //引用名为items的数据列表

效果图

2. 设置ListView的点击事件

给ListView设置setOnItemClickListener

  listView = (ListView)findViewById(R.id.listView1);
   listView.setOnItemClickListener(new OnItemClickListener() {
    public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) {

        //上面的arg2参数比较常用,用来获取点击的是哪一个Item,0是第一个
       Toast.makeText(getApplicationContext(), "点击了第"+arg2+"条", Toast.LENGTH_SHORT).show();

        }
      }
    });

效果图

重点:ListView ,适配器 和java Bean 结

使用ArrayAdapter,共三个Class类Animals.java, AnimalAdapter.java, MainActivity.java

  • 模型层 Animals.java

    public class Animals {
    private String name;
    private int imageId;
    
    public Animals(String name, int imageId) {
    this.name = name;
    this.imageId = imageId;
    }
    public String getName() {
    return name;
    }
    public int getImageId() {
    return imageId;
    }   }
    
  • 适配器类AnimalAdapter.java

    public class AnimalAdapter extends ArrayAdapter<Animals> {
      private int resourceId;
     public AnimalAdapter(Context context, int resource,List<Animals> objects) {
     super(context, resource,objects);
     resourceId = resource;
     }
     //ArrayAdapter需要重写的方法
     public View getView(int position,View convertView,ViewGroup parent){
     //给模型层提供ListView的位置
     Animals animals = getItem(position);
     //************
     //☆☆ListView的优化
     View view; 
     if(convertView == null){
     //设置视图接口
     view = LayoutInflater.from(getContext()).inflate(resourceId, null);        
     }else{ view = convertView;}
     ImageView animalImage = (ImageView) view.findViewById(R.id.animals_image);
     TextView animalName = (TextView) view.findViewById(R.id.aniamls_name);
    animalImage.setImageResource(animals.getImageId());
    animalName.setText(animals.getName());
    //************
    //☆☆☆设置列表内的点击事件
    animalImage.setOnClickListener(new OnClickListener() {  
    public void onClick(View v) {
        Toast.makeText(getContext(), "阿里符合贷款来开发的", Toast.LENGTH_SHORT).show();
    }
    });
    return view;    
    }
    }
    
  • MainActivity.java

    public class MainActivity extends Activity {
    private List<Animals> animalList = new ArrayList<Animals>();
    
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    initAnimals();
    AnimalAdapter adapter = new AnimalAdapter(MainActivity.this, R.layout.animals_item,animalList);
    ListView listview = (ListView)findViewById(R.id.list_view);
    listview.setAdapter(adapter);
    listview.setOnItemClickListener(new OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                long arg3) {
            //☆ 获取点击的位置,并从位置获取其数据        
            Animals animals = animalList.get(arg2);
            Toast.makeText(MainActivity.this, animals.getName(),
            Toast.LENGTH_SHORT).show();
        }
    });         
    }  
    //给数据层提供数据
    private void initAnimals() {
    Animals Tiger = new Animals("Tiger", R.drawable.ddd);
    animalList.add(Tiger);
    Animals Lion = new Animals("Lion", R.drawable.fff);
    animalList.add(Lion);
    Animals Dog = new Animals("Dog", R.drawable.ggg);
    animalList.add(Dog);
    }   }
    

示例:点击列表条

点击单条列表左侧的图片

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章