四十一、【ListView】

149 阅读1分钟

注意:添加header或者footer要添加的是一个View.

一、布局文件

    <ListView
        android:id="@+id/lv_content"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:divider="#f00"
        android:dividerHeight="1dp"/>

2.Adapter 写法要注意


import android.content.Context;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;

import java.util.ArrayList;
import java.util.List;

/**
 * Created by hjq on 2017/8/27.
 */

public class MyListAdapter extends BaseAdapter {
    private static final String TAG = "MyListAdapter";

    private Context mContext;
    private List<String> mListDatas = new ArrayList<>();
    private LayoutInflater mLayoutInfater;


    public MyListAdapter(Context context) {
        mContext = context;
        mLayoutInfater = LayoutInflater.from(context);
    }

    public void addList(List<String> list) {
        mListDatas = list;
    }

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

    @Override
    public Object getItem(int i) {
        return mListDatas.get(i);
    }

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

    @Override
    public View getView(int i, View view, ViewGroup viewGroup) {

        ViewHolder holder = null;
        if (view == null) {
            view = mLayoutInfater.inflate(R.layout.listview_item_layout, null);
            holder = new ViewHolder();
            holder.textView = (TextView)view.findViewById(R.id.tv_text);
            view.setTag(holder);
        }else  {
            holder = (ViewHolder)view.getTag();
        }
        holder.textView.setText(mListDatas.get(i));
        return view;
    }




    /**
     * 第三种方法 调用一次getView()方法;Google推荐的做法
     *
     * @param position 要更新的位置
     */
//    private void updateItem(int position) {
//        /**第一个可见的位置**/
//        int firstVisiblePosition = listView.getFirstVisiblePosition();
//        /**最后一个可见的位置**/
//        int lastVisiblePosition = listView.getLastVisiblePosition();
//
//        /**在看见范围内才更新,不可见的滑动后自动会调用getView方法更新**/
//        if (position >= firstVisiblePosition && position <= lastVisiblePosition) {
//            /**获取指定位置view对象**/
//            View view = listView.getChildAt(position - firstVisiblePosition);
//            commonAdapter.getView(position, view, listView);
//        }
//
//    }

    // 缓存view
    public static class ViewHolder {
        public TextView textView;
    }

}