4.20作业
4.20作业
这次作业题目所给出的的内容很简单,所以理解上不是很透彻,看其他同学的方法和我用的方法有点不一致,认为自己的做的有点简单或者没理解进去题目什么意思
-
根据题目要求自定义Adapter
-
列表的Adapter有三种类型:ArrayAdapter,SimpleAdapter以及SimpleCursorAdapter。我采用的是SimpleAdapter类
-
SimpleAdapter类用来处理ListView显示的数据,这个类可以将任何自定义的XML布局文件作为列表项来使用。
-
列表显示需要三个元素:用来展示列表的view;数据;Adapter
先来看两个XML布局的主要代码:
activity_main
<ListView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/list"
android:scrollbars="vertical"/>
item_listview
<ImageView
android:layout_width="120dp"
android:layout_height="130dp"
android:scaleType="fitCenter"
android:layout_margin="8dp"
android:id="@+id/img"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#445CBB"
android:textSize="35sp"/>
<TextView
android:id="@+id/club"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="25sp"/>
<TextView
android:id="@+id/info"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="25sp"
/>
</LinearLayout>
Java代码
public class MainActivity extends AppCompatActivity {
private ListView list;
private SimpleAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
list=(ListView) findViewById(R.id.list);
adapter = new SimpleAdapter( //创建Adapter
this,
getData(),
R.layout.item_listview,
new String[]{"img", "title", "club","info"},
new int[]{R.id.img, R.id.title,R.id.club,R.id.info});
// 将数据加载到listview
list=(ListView) findViewById(R.id.list);
list.setAdapter(adapter);
// 添加listview的每个item的单击的监听事件
list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) {
String data = (String) adapterView.getItemAtPosition(position);
}
});
}
private List<HashMap<String, Object>> getData() {
List<HashMap<String, Object>> datas = new ArrayList<>();
// 给list增加一条数据
HashMap<String, Object> data = new HashMap<>();
// Map映射添加数据
data.put("title", "梅苏特·厄齐尔");
data.put("club","俱乐部:阿森纳");
data.put("info", "国籍:德国");
data.put("img", R.drawable.a);
// 将这个map放到list中
datas.add(data);
// 给list增加一条数据
data = new HashMap<>();
// Map映射添加数据
data.put("title", "内马尔·达席尔瓦");
data.put("club","俱乐部:巴塞罗那");
data.put("info", "国籍:巴西");
data.put("img", R.drawable.b);
// 将这个map放到list中
datas.add(data);
data = new HashMap<>();
// Map映射添加数据
data.put("title", "克里斯蒂亚诺·罗纳尔多");
data.put("club","俱乐部:皇家马德里");
data.put("info", "国籍:葡萄牙");
data.put("img", R.drawable.c);
// 将这个map放到list中
datas.add(data);
data = new HashMap<>();
// Map映射添加数据
data.put("title", "冈萨洛·伊瓜因");
data.put("club","俱乐部:尤文图斯");
data.put("info", "国籍:阿根廷");
data.put("img", R.drawable.d);
// 将这个map放到list中
datas.add(data);
return datas;
}
}
最后的效果图如下: