最常用的組件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);
    }   }
    

示例:點擊列表條

點擊單條列表左側的圖片

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