安卓学习-(滚动布局:ListView)

来源:互联网 发布:淘宝上很火的安娜家 编辑:程序博客网 时间:2024/05/27 21:48
8、ListView
简单的listview,可以滚动到屏幕外
privateString[] data= {"apple","Orange"};

privateList<Fruit> fruitList= newArrayList<Fruit>();
@Override
protected voidonCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ArrayAdapter<String> adaper =new ArrayAdapter<String>(
MainActivity.this, android.R.layout.simple_list_item_1,data);
ListView listview = (ListView) findViewById(R.id.list_view);
listview.setAdapter(adaper);
}

9、ListView2 复杂listview实例
activity.xml
<?xml version="1.0"encoding="utf-8"?>
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ListView
android:id="@+id/list_view"
android:layout_width="match_parent"
android:layout_height="match_parent">
</ListView>
</LinearLayout>

MainActivity.java
packagecom.example.listviewtest;

importandroid.support.v7.app.AppCompatActivity;
importandroid.os.Bundle;
importandroid.view.View;
importandroid.widget.AdapterView;
importandroid.widget.ArrayAdapter;
importandroid.widget.ListView;
importandroid.widget.Toast;

importjava.util.ArrayList;
importjava.util.List;

public classMainActivity extendsAppCompatActivity {

privateList<Fruit> fruitList= newArrayList<Fruit>();

@Override
protected voidonCreate(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(newAdapterView.OnItemClickListener() {
@Override
public voidonItemClick(AdapterView<?> parent, View view,
intposition, longid) {
Fruit fruit =fruitList.get(position);
Toast.makeText(MainActivity.this, fruit.getName(), Toast.LENGTH_SHORT).show();
}
});
}

private voidinitFruits() {
for(inti = 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 orange =new Fruit("Orange", R.drawable.orange_pic);
fruitList.add(orange);
Fruit watermelon =new Fruit("Watermelon", R.drawable.watermelon_pic);
fruitList.add(watermelon);
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 pineapple =new Fruit("Pineapple", R.drawable.pineapple_pic);
fruitList.add(pineapple);
Fruit strawberry =new Fruit("Strawberry", R.drawable.strawberry_pic);
fruitList.add(strawberry);
Fruit cherry =new Fruit("Cherry", R.drawable.cherry_pic);
fruitList.add(cherry);
Fruit mango =new Fruit("Mango", R.drawable.mango_pic);
fruitList.add(mango);
}
}
}


Fruit.java
packagecom.example.listviewtest;

public classFruit {
privateString name;
private intimageId;
publicFruit(String name, intimageId) {
this.name= name;
this.imageId= imageId;
}
publicString getName() {
returnname;
}
public intgetImageId() {
returnimageId;
}
}

fruit_item.xml
<?xml version="1.0"encoding="utf-8"?>
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/fruit_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<TextView
android:id="@+id/fruit_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginLeft="10dp"/>
</LinearLayout>

FruitAdapter.java
packagecom.example.listviewtest;

importandroid.content.Context;
importandroid.view.LayoutInflater;
importandroid.view.View;
importandroid.view.ViewGroup;
importandroid.widget.ArrayAdapter;
importandroid.widget.ImageView;
importandroid.widget.TextView;

importjava.util.List;

public classFruitAdapter extendsArrayAdapter<Fruit> {

private intresourceId;

publicFruitAdapter(Context context, int itemLayoutResourceId, List<Fruit> objects) {
super(context,itemLayoutResourceId, objects);
resourceId= itemLayoutResourceId;
}

@Override
//View convertView 用于将之前加载好的数据缓存
publicView getView(intposition, View convertView, ViewGroup parent) {
Fruit fruit = getItem(position);// 获取当前项的Fruit实例
View view;
ViewHolder viewHolder;
if(convertView == null) {
// 如果说当前子布局没有在缓存中,那么就在这里创建这个view
// 然后把布局加载到 viewHolder 里面;再把 viewHolder 放到 view中
// 然后把当前一个子布局的值填进去,最后返回view就行,不用对里面的viewHolder 做操作。
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);// 将ViewHolder存储在View中
}else {
view = convertView;
viewHolder = (ViewHolder) view.getTag();// 重新获取ViewHolder
}
viewHolder.fruitImage.setImageResource(fruit.getImageId());
viewHolder.fruitName.setText(fruit.getName());
returnview;
}
classViewHolder {
ImageViewfruitImage;
TextViewfruitName;
}
}
阅读全文
0 0
原创粉丝点击