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

2025-09-27 13:05:49

1、用Android Studio建好项目

2、新建抽象类Common Adapter

public 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 Holder

public class ViewHolder {    //SparseArray类似于hashMap, 是<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、private ListView 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);

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢