ListView

    xiaoxiao2021-03-25  125

    学习了该书籍的ListView的用法 总结出学习笔记 还望指正

    ListView的简单用法

    1, 在布局文件中添加listView文件 id为list_view

    2, 声明全局变量 ArrayAdapter<String>、ListView

    3, 添加数组 data

    4, 创建适配器

    上下文 this

    listView子项布局的id android.R.layout.simple_list_item_1

    数据 data

    5, Listview找到ID

    6, Lisiview找到适配器

    代码:

    activity_main.xml

    <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.example.air1997.mylistviewtest1.MainActivity"> <ListView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/list_view" ></ListView> </RelativeLayout>

    MainActivity.java

    import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.ArrayAdapter; import android.widget.ListView; public class MainActivity extends AppCompatActivity { private ArrayAdapter<String> arrayAdapter; private ListView listView; private String[] data={"apple","banana","orange"}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); arrayAdapter=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,data); listView=(ListView)findViewById(R.id.list_view); listView.setAdapter(arrayAdapter); } }

    输出效果如下:

    定制ListView 的界面

    1, 定制适配器的适配类型 即新建一个类 如Fruit类

    public class Fruit { private String name; public int getImageId() { return imageId; } public void setImageId(int imageId) { this.imageId = imageId; } public String getName() { return name; } public void setName(String name) { this.name = name; } private int imageId; }

     

    2, 创建一个定制的布局 如fruit_item.xml并添加Image、TextView 且有各自的id

    3, 定制一个适配器 继承ArrayAdapter适配器 例如FruitAdapter

    4, 声明全局变量resourId

    5, 在MainActivity.java中使用适配器

    代码如下:

    activity.xml

    <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.example.air1997.mylistviewtest1.MainActivity"> <ListView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/list_view" ></ListView> </RelativeLayout>

    MainActivity.java

    import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.ArrayAdapter; import android.widget.ListView; import java.util.ArrayList; import java.util.List; public class MainActivity extends AppCompatActivity { private ArrayAdapter<String> arrayAdapter; private ListView listView; private String[] data={"apple","banana","orange"}; 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); } private void initFruits(){ for (int i=0;i<2;i++){ Fruit apple=new Fruit("Apple",R.mipmap.ic_launcher); fruitList.add(apple); Fruit banana=new Fruit("Banana",R.mipmap.ic_launcher); fruitList.add(banana); Fruit orange=new Fruit("Orange",R.mipmap.ic_launcher); fruitList.add(orange); } } } fruit_item.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"> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/fruit_image" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/fruit_name" /> </LinearLayout> FruitAdapter.java

    import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.ImageView; import android.widget.TextView; import java.util.List; /** * Created by AIR1997 on 2017/3/9. */ public class FruitAdapter extends ArrayAdapter<Fruit> { private int resourceId; public FruitAdapter(Context context, int textViewResourceId, List<Fruit> objects){ super(context,textViewResourceId,objects); resourceId=textViewResourceId; } @Override public View getView(int position , View convertView, ViewGroup parent){ Fruit fruit=getItem(position); View view = LayoutInflater.from(getContext()).inflate(resourceId,parent,false); ImageView fruitImage=(ImageView)view.findViewById(R.id.fruit_image); TextView fruitName=(TextView)view.findViewById(R.id.fruit_name); fruitImage.setImageResource(fruit.getImageId()); fruitName.setText(fruit.getName()); return view; } } 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; } }

    效果如下:

    说明:关于书籍3.5.3及3.5.4 的内容不做笔记

    转载请注明原文地址: https://ju.6miu.com/read-7393.html

    最新回复(0)