实验题目:Android控件之ListView应用
实验目的:
1.熟悉Android常用控件及ListView控件使用
2.创建Store应用,实现数据库的列表显示
实验环境:Android Studio
实验内容:创建MyStore应用
(1)创建名为ListView的应用程序
(2)导入界面图片
在res文件中创建drawable-hdpi文件,并导入图片资源
(3)放置界面控件
在activity_main文件中,放置一个TextView控件和一个ListView控件,用于显示商城界面的列表
(4)创建Item界面
购物商城上的列表由若干个Item组成,每个Item显示商品图片、名称和价格。
在res/layout文件中创建list_item.xml文件。在文件中放入一个ImageView控件和三个TextView控件。
查看效果
(5)编写界面交互代码
在MainActivity文件中创建ViewHolder类,将需要加载的控件放入该类。
定义三个数组,分别存储商品中的名称,价格和图片。
初始化ListView控件
通过setAdapter()方法为ListView控件设置适配器。
创建MyBaseAdapter类,继承自BaseAdapter,并重写方法。
3.实验结果
实验总结:
本次实验熟悉了Android常用控件。掌握了ListView控件使用,创建名为ListView的应用,实现了数据库的列表显示。学会了适配器的简单应用。并学习了对ListView加载数据逻辑的代码的优化。
--------------------------------------------------------------------------------------- 1. <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <TextView android:layout_width="match_parent" android:layout_height="45dp" android:background="#FF8F03" android:gravity="center" android:text="购物商城" android:textColor="#FFFFFF" android:textSize="18sp" /> <ListView android:id="@+id/lv" android:layout_width="match_parent" android:layout_height="wrap_content" /> </LinearLayout>
2.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="16dp">
<ImageView
android:id="@+id/iv"
android:layout_width="120dp"
android:layout_height="90dp"
android:layout_centerVertical="true" />
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginLeft="10dp"
android:layout_toRightOf="@+id/iv">
<TextView
android:text="桌子"
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#000000"
android:textSize="20sp" />
<TextView
android:id="@+id/tv_price"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/title"
android:layout_marginTop="10dp"
android:text="价格:"
android:textColor="#FF8F03"
android:textSize="20sp" />
<TextView
android:text="1000"
android:id="@+id/price"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:layout_below="@+id/title"
android:layout_toRightOf="@+id/tv_price"
android:textColor="#FF8F03"
android:textSize="20sp " />
</RelativeLayout>
</RelativeLayout>
3.
package cn.itcast.listview;
import androidx.appcompat.app.AppCompatActivity;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import org.w3c.dom.Text;
public class MainActivity extends AppCompatActivity {
private String[] titles={"desk","apple","cake","wireclothes","kiwifruit","scarf"};
private String[] prices={"800元","10元/kg","300元","350元","10元/kg","280元"};
private int[] icons={R.drawable.table,R.drawable.apple,R.drawable.cake,
R.drawable.wireclothes,R.drawable.kiwifruit,R.drawable.scarf};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ListView listView = findViewById(R.id.lv);
MyBaseAdapter adapter=new MyBaseAdapter();
listView.setAdapter(adapter);
}
class MyBaseAdapter extends BaseAdapter{
@Override
public int getCount() {//item总数
return titles.length;
}
@Override
public Object getItem(int position) { //item数据对象
return titles[position];
}
@Override
public long getItemId(int position) { // item id
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) { // view视图
//将list_item.xml转换为view对象
// View view = View.inflate(MainActivity.this,R.layout.list_item,null);
// //初始化控件list_item中的
// TextView title = view.findViewById(R.id.title);
// TextView price= view.findViewById(R.id.price);
// ImageView iv = view.findViewById(R.id.iv);
// //将数组信息设置在布局中
// title.setText(titles[position]);
// price.setText(prices[position]);
// iv.setImageResource(icons[position]);
ViewHolder holder=null;
if(convertView==null){
convertView = View.inflate(MainActivity.this,R.layout.list_item,null);
holder=new ViewHolder();
holder.title= (TextView) convertView.findViewById(R.id.title);
holder.price= (TextView) convertView.findViewById(R.id.price);
holder.iv = (ImageView) convertView.findViewById(R.id.iv);
convertView.setTag(holder);
}else{
holder=(ViewHolder) convertView.getTag();
}
holder.title.setText(titles[position]);
holder.price.setText(prices[position]);
holder.iv.setBackgroundResource(icons[position]);
return convertView;
}
}
class ViewHolder{
TextView title;
TextView price;
ImageView iv;
}
}