如何使用ListView显示10行文字在手机界面上

 时间:2024-10-11 22:24:56

1、用Android Studio建好项目

2、新建抽象类Common Adapterpublic abstract class CommonAdapter媪青怍牙<T> extends BaseAdapter { //声明为protected, 让子类继承,子类默认继承父类的属性(权限允许下) protected Context mContext; protected List<T> mDatas = new ArrayList<T>(); protected LayoutInflater mInflater; protected int layoutId; public CommonAdapter(Context context, int layoutId, List<T> mDatas){ this.mContext = context; this.layoutId = layoutId; this.mDatas = mDatas; mInflater = LayoutInflater.from(context); } @Override public int getCount() { return mDatas.size(); } @Override public T getItem(int position) { return mDatas.get(position); } @Override public long getItemId(int position) { return position; } //因为不同的Bean对应的getView方法不同,所以把getView方法声明为抽象方法 @Override public View getView(int position, View convertView, ViewGroup parent){ ViewHolder viewHolder = ViewHolder.get(mContext, convertView, parent, layoutId, position); convert(viewHolder, getItem(position)); return viewHolder.getConvertView(); } /** * 不同的子类重写自己的convert方法初始化item中的组件 * @param viewHolder * @param t */ protected abstract void convert(ViewHolder viewHolder, T t);}

3、新建类View Holderpub盟敢势袂lic class ViewHolder { //SparseArray类似于hash罄休卦咦Map, 是<int,Object>的键值对,效率比HashMap要高 private SparseArray<View> mViews; private View mConvertView; private int position; public ViewHolder(Context context, ViewGroup parent, int layoutId, int position){ this.position = position; mViews = new SparseArray<View>(); mConvertView = LayoutInflater.from(context).inflate(layoutId, parent, false); mConvertView.setTag(this); } public static ViewHolder get(Context context, View converView, ViewGroup parent, int layoutId, int position){ if( converView == null ){ return new ViewHolder(context, parent, layoutId, position); }else{ ViewHolder viewHolder = (ViewHolder) converView.getTag(); //position要随之改变 viewHolder.position = position; return viewHolder; } } /** * 通过viewId获取控件,使用泛型返回一个继承于View的对象T, 使用于各种View组件 * @param viewId * @param <T> * @return */ public < T extends View > T getView(int viewId){ View view = mViews.get(viewId); if( view == null ){ view = mConvertView.findViewById(viewId); mViews.put(viewId,view); } return (T) view; } public View getConvertView(){ return mConvertView; } // 方法返回值为ViewHolder类型,返回this,使得该方法可以进行链式编程 // 就像AlertDialog的setTitle().setMessage().setXXX().onCreate() public ViewHolder setText(int viewId, String text){ TextView textView = getView(viewId); textView.setText(text); return this; } public ViewHolder setImageBySrc(int viewId, int resId){ ImageView imageView = getView(viewId); imageView.setImageResource(resId); return this; } public ViewHolder setImageByBitmap(int viewId, Bitmap bitmap){ ImageView imageView = getView(viewId); imageView.setImageBitmap(bitmap); return this; } public ViewHolder setImageByUrl(int viewId, String url){ ImageView imageView = getView(viewId); /** * 使用ImageLoader加载网络图片,如Volley的ImageLoader */ return this; } public int getPosition() { return position; } public void setPosition(int position) { this.position = position; }}

4、在xml文件中加入以下代码<ListView android:id="@+id/lv_contact" android:layout_width="wrap_content" android:layout_height="match_parent" />

5、可以再新建一个xml文件定义listview每一个ListItem的样式,文件名为item,默认样式如下图

如何使用ListView显示10行文字在手机界面上

6、定义一个String类型的数组,把要显示的文字存进数组。数组名如list

7、privateListView listview;CommonAdapter<String> adapter= new CommonAdapter<String>(this,R.layout.item,list) {@Overrideprotected void convert(ViewHolder viewHolder, final String list) { for(int i=0;i<10;i++){ viewHolder.setText(R.id.friend_list_name,list.get(i)); }}};listview.setAdapter(adapter);

  • 详解MongoDB如何更新文档 ( 增加和删除属性 )
  • Eclipse中Pmd的安装的安装及配置规则
  • XMind中如何显示或隐藏任务信息
  • 如何在vs中修改QT窗口图标和名称?
  • 查看android手机的界面布局
  • 热门搜索
    母亲节手抄报简单漂亮 国庆节手抄报图片大全 预防新型冠状病毒手抄报 关于幸福的手抄报 端午节的手抄报 简单又漂亮 妇女节手抄报内容 黑白手抄报 心理健康手抄报模板 防疫手抄报大全图片 读书心得手抄报