技术博客四:用Listview显示列表

本文详细介绍了Android中使用ListView展示列表的方法,包括ListView的基本使用、适配器的定义及实现方式,以及如何将数据源与UI进行绑定。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

列表的显示需要三个元素:
1.ListVeiw:用来展示列表的View。
2.适配器:用来把数据映射到ListView上的中介。
3.数据:具体的将被映射的字符串,图片,或者基本组件。

下面用一个实例说明:
1.ListVeiw
Java中:
private ListView lvSearchReasult;
lvSearchReasult = (ListView) findViewById(R.id.lv_search_list);

  Xml中:
<ListView
        android:id="@+id/lv_search_list"
        android:layout_width="match_parent"
    android:layout_height="wrap_content"
        android:divider="@color/item_focuse"
        android:dividerHeight="0.1dp" >
</ListView>

2.适配器
适配器的设置:
SearchResultListAdapter adapter = new SearchResultListAdapter(listSearchResult, MainActivity.this);
lvSearchReasult.setAdapter(adapter);

适配器的定义:
Java:
public class SearchResultListAdapter extends BaseAdapter {
private List<Music> list;

private Context context;

public SearchResultListAdapter(List<Music> list, Context c) {
        super();
        this.list = list;
        this.context = c;
}

@Override
public int getCount() {
        return list.size();
}

@Override
public Object getItem(int position) {
        return list.get(position);
}

@Override
public long getItemId(int position) {
        return position;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    ViewHolder holder = null;
    holder = new ViewHolder();
    if (convertView == null) {
     convertView = View.inflate(context,
           R.layout.item_online_search_list, null);
     holder.tvMusicName = (TextView) convertView
           .findViewById(R.id.tv_search_list_title);
     holder.tvMusicAritist = (TextView) convertView
           .findViewById(R.id.tv_search_list_airtist);
     holder.ivMusicImage = (ImageView) convertView
           .findViewById(R.id.iv_search_list);
     convertView.setTag(holder);   //区分不同的convertView
  } else {
     holder = (ViewHolder) convertView.getTag();
  }
  Music music = list.get(position);
  holder.tvMusicName.setText(music.getMusciName());
  holder.tvMusicAritist.setText(music.getAirtistName());
  ImageUtils.disPlay(music.getSmallAlumUrl(), holder.ivMusicImage,
        R.drawable.icon_orange);
  return convertView;

}

class ViewHolder {
TextView tvMusicName, tvMusicAritist;
ImageView ivMusicImage;
}

}

XML:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
style="@style/list_padding"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/selector_ltem" >

<ImageView
    android:id="@+id/iv_search_list"
    android:layout_width="44dp"
    android:layout_height="44dp"
    android:layout_centerVertical="true"
    android:scaleType="centerCrop"
    android:src="@drawable/icon_orange"
    tools:ignore="ContentDescription" />

<RelativeLayout
    android:layout_width="wrap_content"
    android:layout_height="44dp"
    android:layout_marginLeft="4dp"
    android:layout_toRightOf="@+id/iv_search_list"
    tools:ignore="RtlHardcoded" >

    <TextView
        android:id="@+id/tv_search_list_title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:singleLine="true"
        android:text="随他吧"
        android:textColor="@color/black"
        android:textSize="@dimen/txt_size_title"
        tools:ignore="HardcodedText" />

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:orientation="horizontal" >

        <TextView
            android:layout_width="24dp"
            android:layout_height="12dp"
            android:layout_gravity="center_vertical"
            android:layout_marginLeft="4dp"
            android:background="@color/main_orange"
            android:gravity="center"
            android:singleLine="true"
            android:text="H Q"
            android:textColor="@color/white"
            android:textSize="8sp"
            android:textStyle="bold"
            tools:ignore="HardcodedText,SmallSp" />

        <TextView
            android:id="@+id/tv_search_list_airtist"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="4dp"
            android:gravity="center"
            android:singleLine="true"
            android:text="胡维纳"
            android:textColor="@color/gray_deep"
            android:textSize="14sp"
            tools:ignore="HardcodedText" />
    </LinearLayout>
</RelativeLayout>

<ImageView
    android:layout_width="40dp"
    android:layout_height="40dp"
    android:layout_alignParentRight="true"
    android:layout_centerVertical="true"
    android:background="@drawable/icon_more"
    tools:ignore="ContentDescription,RtlHardcoded" />

该XML文件配置的时候列表每一行的布局,适配器会将得到的数据按照这样的布局以前面设置好的Textview格式一行一行显示在UI上。

3.数据
数据通常情况是一个数组,适配器会将其中的每一项按照规定的布局显示在UI中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值