一、自定義一個Friend類,用于對應ListView的每一基本資料項
Friend.java
public class Friend {
private String name; //名稱
private int icon; //頭像
private String description; // 描述
//初始花化資料
public Friend(String n, int ic, String des){
name = n;
icon = ic;
description = des;
}
//獲取資料的三個函式
public String getName() {
return name;
}
public int getIcon() {
return icon;
}
public String getDescription() {
return description;
}
}
二、自定義一個布局檔案來存盤每一項資料的UI
item_friend_layout.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="5dp"
>
<ImageView
android:id="@+id/item_im_icon"
android:layout_width="60dp"
android:layout_height="60dp"
android:src="@drawable/head_1"
android:adjustViewBounds="true"
android:scaleType="fitXY"
/>
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:orientation="vertical"
android:paddingLeft="10dp">
<TextView
android:id="@+id/item_tv_name"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:textColor="#000"
android:text="張三"
android:textSize="25sp"
android:gravity="center_vertical"
/>
<TextView
android:id="@+id/item_tv_des"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:text="我是張三"
android:textSize="20sp"
android:gravity="center_vertical"/>
</LinearLayout>
</LinearLayout>
效果顯示

三、自定義一個Adapter, 繼承自BaseAdapter,并系結item_friend_layout.xml布局
FreiendAdapter.java
public class FriendAdapter extends BaseAdapter {
private List<Friend> data; //friend資料
private Context context;
private LayoutInflater layoutInflater;
//初始化資料,并獲取主視窗的context,獲取friend資料,之后獲取context的布局服務
public FriendAdapter(Context context, List<Friend> data) {
this.data = data;
this.context = context;
layoutInflater = LayoutInflater.from(context);
}
//獲取friend的數目
@Override
public int getCount() {
return data.size();
}
//獲取第i個friend的資料
@Override
public Friend getItem(int i) {
return data.get(i);
}
//獲取第i個friend的id
@Override
public long getItemId(int i) {
return i;
}
//設定每一項friend item的UI
@Override
public View getView(int position, View convertView, ViewGroup viewGroup) {
convertView = layoutInflater.inflate(R.layout.item_friend_layout,null); //加載item布局
//獲取item布局的子控制元件,將friend的資料設定到控制元件上
TextView textView = (TextView) convertView.findViewById(R.id.item_tv_name);
textView.setText((String)data.get(position).getName()); //設定名稱
ImageView imageView = (ImageView)convertView.findViewById(R.id.item_im_icon);
imageView.setImageResource(data.get(position).getIcon()); //設定圖片
TextView textView1 = (TextView)convertView.findViewById(R.id.item_tv_des);
textView1.setText((String)data.get(position).getDescription()); //設定描述
return convertView;
}
}
四、在MainActivity.java設定ListView
1、在主布局里面添加ListView控制元件
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<ListView
android:id="@+id/lv_1"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>
2、設定ListView控制元件
MainActivit.java
public class MainActivity extends AppCompatActivity {
private ListView listView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView = (ListView)findViewById(R.id.lv_1);
setListView();
}
//設定ListView
private void setListView(){
//設定ListView內容
FriendAdapter friendAdapter = new FriendAdapter(this,getData());
listView.setAdapter(friendAdapter);
//設定ListView點擊事件
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
Toast.makeText(MainActivity.this,((FriendAdapter)listView.getAdapter()).getItem(i).getName() + ": " +
""+((FriendAdapter)listView.getAdapter()).getItem(i).getDescription(), Toast.LENGTH_SHORT).show();
}
});
}
//獲取串列內部的friend資料
private List<Friend> getData(){
List<Friend> data = new ArrayList<Friend>();
for(int i = 0; i<10;i++){
//根據圖片名稱獲取圖片id
int id = getResources().getIdentifier("head_"+i%4,"drawable",getPackageName());
data.add(new Friend("用戶"+i,id,"我是用戶"+i));
}
return data;
}
}
五、效果顯示

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/201507.html
標籤:其他
上一篇:Android-底部導航欄的實作Fragment+ViewPager滑動切換頁面
下一篇:Android知識點
