解决方案 »

  1.   

    eoe的这个帖子我看了,,,有点问题...http://www.eoeandroid.com/thread-495020-1-1.html
      

  2.   

    已经解决,非常感谢EOE的哪个帖子package com.baidu.bvideoviewsample1;import java.util.HashMap;
    import java.util.Map;
    import com.baidu.bvideoviewsample1.PlayView.onPlayerCreated;import android.app.ListActivity;
    import android.graphics.Color;
    import android.media.MediaPlayer;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.AbsListView;
    import android.widget.AbsListView.OnScrollListener;
    import android.widget.BaseAdapter;
    import android.widget.Button;
    import android.widget.ListView;
    import android.widget.TextView;public class List17 extends ListActivity  {
    private LayoutInflater inflater;
    private int vHeight;
    private MyAdapter adatper;
    private int firstVisibleIndex;
    private Map<Integer, View> views = new HashMap<Integer, View>();
    // 改成你自己的手机屏幕像素
    private int screenHeight = 1920;
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    inflater = LayoutInflater.from(this);
    vHeight = DensityUtil.dip2px(this, 400); 
    adatper = new MyAdapter();
    setListAdapter(adatper);
    getListView().setTextFilterEnabled(true);
    getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE);
    getListView().setItemChecked(0, true);
    getListView().setOnScrollListener(new OnScrollListener() {
    public void onScrollStateChanged(AbsListView view, int scrollState) {
    if (scrollState == SCROLL_STATE_IDLE) {
    View firstItem1 = views.get(Integer.valueOf(firstVisibleIndex));
    if (firstItem1 != null) {
    int[] location = new int[2];
    firstItem1.getLocationOnScreen(location);
    int x = location[0];
    int y = location[1];
    if (isItemViewLittleVisible(y)) {
    getListView().setItemChecked(firstVisibleIndex,true);
    PlayView pl=(PlayView) firstItem1.findViewById(R.id.play_view);
    pl.start();
    } else {
    PlayView pl=(PlayView) firstItem1.findViewById(R.id.play_view);
    pl.stop();
    getListView().setItemChecked(firstVisibleIndex ,false);
    getListView().setItemChecked(firstVisibleIndex + 1,true);
    PlayView p2=(PlayView)  views.get(Integer.valueOf(firstVisibleIndex+1)).findViewById(R.id.play_view);
    p2.start();
    }
    }
    views.clear();//此处必须清楚之前的view,因为之前保存的view 以前不是现在展示的view了,第二个及时清空map,因为保存也没有意义了。
    }
    }
    public void onScroll(AbsListView view, int firstVisibleItem,int visibleItemCount, int totalItemCount) {
    firstVisibleIndex = firstVisibleItem;
    }
    });
    }
    // item 大部分区域不可见,此处约为3/5不可见
    private boolean isItemViewLittleVisible(int itemY) {
    return (vHeight + itemY) > vHeight / 5 *4 && itemY < screenHeight ? true: false;
    }
    private String[] mStrings = new String[] { "111", "111", "111", "111",
    "111", "111", "111", "111", "111", "111", "111", "111", "111",
    "111", "111", "111", "111", "111", "111", "111", "111", "111" };
    class MyAdapter extends BaseAdapter {
    public int getCount() {
    return mStrings.length;
    }
    public Object getItem(int position) {
    return mStrings[position];
    }
    public long getItemId(int position) {
    return position;
    }
    public View getView(int position, View convertView, ViewGroup parent) {
    final ViewHolder holder;
    if (convertView == null) {
    convertView = inflater.inflate(R.layout.item_test, null);
    holder = new ViewHolder();
    holder.play_view = (PlayView) convertView.findViewById(R.id.play_view);
    holder.btn1 = (Button) convertView.findViewById(R.id.button1);
    convertView.setTag(holder);
    } else {
    holder = (ViewHolder) convertView.getTag();
    }
    if (!views.containsKey(Integer.valueOf(position))) {
    views.put(Integer.valueOf(position), convertView);
    }
    holder.position = position;
    return convertView;
    } class ViewHolder {
    public PlayView play_view;
    public Button btn1;
    public int position; } }
    }