解决方案 »
- eclipse创建类 能继承expandablelistadatper无法继承baseexpandablelistadapter 如何解决?
- 根据email地址打开网址的问题
- Android 绘制的图片质量变差
- 多线程的疑问
- Android 画图时 如何控制透明区域不画图?
- 关于HorizontalScrollView滚动后获取焦点的问题,谢谢
- 如何使Android手机实现USB开机?
- arcgis for android 如何实现离线地图加密功能
- 请教:如微信公共平台新闻信息这样的样式框如何处理
- 如何解析这个XML?用pull
- expandableListView如何实现滑动时自动展开
- 新建的安卓项目报错
package com.example.startmenu;import java.util.ArrayList;
import java.util.List;import com.example.startmenu.AsyncImageLoader.ImageCallback;import android.app.Activity;
import android.graphics.drawable.Drawable;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;public class ImageAndTextListAdapter extends BaseAdapter { private LayoutInflater inflater;
private ListView listView;
private AsyncImageLoader asyncImageLoader;
private DBUtil dbUtil;
private List<String> dataArray=new ArrayList<String>(); public ImageAndTextListAdapter(Activity activity, List<String> imageAndTexts, ListView listView) { this.listView = listView;
asyncImageLoader = new AsyncImageLoader();
inflater = activity.getLayoutInflater();
//dbu=new DBUtil();
dataArray=imageAndTexts;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return dataArray.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
if(position >= getCount()){
return null;
}
return dataArray.get(position);
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
} //不需要ViewHolder版,直接将ImageAndText与XML资源关联起来
public View getView(int position, View convertView, ViewGroup parent)
{
if (convertView == null)
{
convertView = inflater.inflate(R.layout.pulldown_item, null);
}
convertView.setTag(position);
//{
int i=(position+1)*6;
if(i<=dataArray.size())
{
TextView textView0 = (TextView) convertView.findViewById(R.id.txt_id);
TextView textView = (TextView) convertView.findViewById(R.id.txt_Cno1);
TextView textView1 = (TextView) convertView.findViewById(R.id.txt_Cname1);
TextView textView2= (TextView) convertView.findViewById(R.id.txt_Cnum1);
TextView textView3 = (TextView) convertView.findViewById(R.id.txt_isnuanqi1);
// 将XML视图项与用户输入的URL和文本在绑定
textView0.setText(dataArray.get(i-6).toString());
textView.setText(dataArray.get(i-5).toString());//加载TEXT
textView1.setText(dataArray.get(i-4).toString());
textView2.setText(dataArray.get(i-3).toString());
textView3.setText(dataArray.get(i-2).toString());
String imageUrl =dataArray.get(i-1).toString();
ImageView iv = (ImageView) convertView.findViewById(R.id.imageView1);
iv.setBackgroundResource(R.drawable.rc_item_bg);
//System.out.print(dataArray.toArray().toString());
asyncImageLoader.loadDrawable(position,imageUrl, new ImageCallback()
{
@Override
public void onImageLoad(Integer pos, Drawable drawable)
{
View view = listView.findViewWithTag(pos);
System.out.print(dataArray.get(pos).toString()+"---------------------asdfadsfsdafsdafsdaf----------------");
if(view != null)
{
ImageView iv = (ImageView) view.findViewById(R.id.imageView1);
iv.setBackgroundDrawable(drawable);
}
}
//加载不成功的图片处理
@Override
public void onError(Integer pos)
{
View view = listView.findViewWithTag(pos);
if(view != null)
{
ImageView iv = (ImageView) view.findViewById(R.id.imageView1);
iv.setBackgroundResource(R.drawable.rc_item_bg);
}
}
});}
return convertView;
}
}
package com.example.startmenu;import android.content.Context;
import android.os.Handler;
import android.util.AttributeSet;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.widget.AbsListView;
import android.widget.ListView;
/**
* 个可以监听ListView是否滚动到最顶部或最底部的自定义控件
* 只能监听由触摸产生的,如果是ListView本身Flying导致的,则不能监
* 如果加以改进,可以实现监听scroll滚动的具体位置等
* @author solo ho Email:[email protected]
*/public class ScrollOverListView extends ListView { private int mLastY;
private int mTopPosition;
private int mBottomPosition;
private int lastVisibileItem;
private View loadingView;
private Handler mHandler;
private ImageAndTextListAdapter mListAdapter;
//private TextView tvLoading;
public int visibleIndex = 0;
//private List<String> list;
//private List<String> listLoad;
private int count = 0;
public ScrollOverListView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
init();
} public ScrollOverListView(Context context, AttributeSet attrs) {
super(context, attrs);
init();
} public ScrollOverListView(Context context) {
super(context);
init();
} private void init(){
mTopPosition = 0;
mBottomPosition = 0;
}
public void onScrollStateChanged(AbsListView view, int scrollState) {
if(scrollState == OnScrollListener.SCROLL_STATE_IDLE && (lastVisibileItem+1) == this.getCount()){
mHandler = new Handler();
mHandler.postDelayed(new Runnable(){
@Override
public void run() {
mListAdapter.notifyDataSetChanged();
}
}, 800);
}
}
@Override
public boolean onTouchEvent(MotionEvent ev) {
final int action = ev.getAction();
final int y = (int) ev.getRawY();
switch(action){
case MotionEvent.ACTION_DOWN:{
mLastY = y;
final boolean isHandled = mOnScrollOverListener.onMotionDown(ev);
if (isHandled) {
mLastY = y;
return isHandled;
}
break;
}
case MotionEvent.ACTION_MOVE:{
final int childCount = getChildCount();
if(childCount == 0) return super.onTouchEvent(ev);
final int itemCount = getAdapter().getCount() - mBottomPosition;
final int deltaY = y - mLastY;
//DLog.d("lastY=%d y=%d", mLastY, y);
final int firstTop = getChildAt(0).getTop();
final int listPadding = getListPaddingTop();
final int lastBottom = getChildAt(childCount - 1).getBottom();
final int end = getHeight() - getPaddingBottom();
final int firstVisiblePosition = getFirstVisiblePosition();
final boolean isHandleMotionMove = mOnScrollOverListener.onMotionMove(ev, deltaY);
if(isHandleMotionMove){
mLastY = y;
return true;
}
//DLog.d("firstVisiblePosition=%d firstTop=%d listPaddingTop=%d deltaY=%d", firstVisiblePosition, firstTop, listPadding, deltaY);
if (firstVisiblePosition <= mTopPosition && firstTop >= listPadding && deltaY > 0) {
final boolean isHandleOnListViewTopAndPullDown;
isHandleOnListViewTopAndPullDown = mOnScrollOverListener.onListViewTopAndPullDown(deltaY);
if(isHandleOnListViewTopAndPullDown){
mLastY = y;
return true;
}
}
// DLog.d("lastBottom=%d end=%d deltaY=%d", lastBottom, end, deltaY);
if (firstVisiblePosition + childCount >= itemCount && lastBottom <= end && deltaY < 0) {
final boolean isHandleOnListViewBottomAndPullDown;
isHandleOnListViewBottomAndPullDown = mOnScrollOverListener.onListViewBottomAndPullUp(deltaY);
if(isHandleOnListViewBottomAndPullDown){
mLastY = y;
return true;
}
}
break;
}
case MotionEvent.ACTION_UP:{
final boolean isHandlerMotionUp = mOnScrollOverListener.onMotionUp(ev);
if (isHandlerMotionUp) {
mLastY = y;
return true;
}
break;
}
}
mLastY = y;
return super.onTouchEvent(ev);
}
/**空的*/
private OnScrollOverListener mOnScrollOverListener = new OnScrollOverListener(){ @Override
public boolean onListViewTopAndPullDown(int delta) {
return false;
} @Override
public boolean onListViewBottomAndPullUp(int delta) {
return false;
} @Override
public boolean onMotionDown(MotionEvent ev) {
return false;
} @Override
public boolean onMotionMove(MotionEvent ev, int delta) {
return false;
} @Override
public boolean onMotionUp(MotionEvent ev) {
return false;
}
};
// =============================== public method =============================== /**
* 可以自定义其中一个条目为头部,头部触发的事件将以这个为准,默认为第一�?
*
* @param index 正数第几个,必须在条目数范围之内
*/
public void setTopPosition(int index){
if(getAdapter() == null)
throw new NullPointerException("You must set adapter before setTopPosition!");
if(index < 0)
throw new IllegalArgumentException("Top position must > 0");
mTopPosition = index;
}
/**
* 可以自定义其中一个条目为尾部,尾部触发的事件将以这个为准,默认为�?后一�?
*
* @param index 倒数第几个,必须在条目数范围之内
*/
public void setBottomPosition(int index){
if(getAdapter() == null)
throw new NullPointerException("You must set adapter before setBottonPosition!");
if(index < 0)
throw new IllegalArgumentException("Bottom position must > 0");
mBottomPosition = index;
} /**
* 设置这个Listener可以监听是否到达顶端,或者是否到达低端等事件</br>
*
* @see OnScrollOverListener
*/
public void setOnScrollOverListener(OnScrollOverListener onScrollOverListener){
mOnScrollOverListener = onScrollOverListener;
}
/**
* 滚动监听接口</br>
* @see ScrollOverListView#setOnScrollOverListener(OnScrollOverListener)
*
* @author solo ho</br> Email:[email protected]
*/
public interface OnScrollOverListener {
/**
* 到达�?顶部触发
*
* @param delta 手指点击移动产生的偏移量
* @return
*/
boolean onListViewTopAndPullDown(int delta); /**
* 到达�?底部触发
*
* @param delta 手指点击移动产生的偏移量
* @return
*/
boolean onListViewBottomAndPullUp(int delta);
/**
* 手指触摸按下触发,相当于{@link MotionEvent#ACTION_DOWN}
*
* @return 返回true表示自己处理
* @see View#onTouchEvent(MotionEvent)
*/
boolean onMotionDown(MotionEvent ev);
/**
* 手指触摸移动触发,相当于{@link MotionEvent#ACTION_MOVE}
*
* @return 返回true表示自己处理
* @see View#onTouchEvent(MotionEvent)
*/
boolean onMotionMove(MotionEvent ev, int delta);
/**
* 手指触摸后提起触发,相当于{@link MotionEvent#ACTION_UP}
*
* @return 返回true表示自己处理
* @see View#onTouchEvent(MotionEvent)
*/
boolean onMotionUp(MotionEvent ev);
}
}
package com.example.startmenu;import java.util.ArrayList;
import java.util.List;import com.example.startmenu.AsyncImageLoader.ImageCallback;import android.app.Activity;
import android.graphics.drawable.Drawable;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;public class ImageAndTextListAdapter extends BaseAdapter { private LayoutInflater inflater;
private ListView listView;
private AsyncImageLoader asyncImageLoader;
private DBUtil dbUtil;
private List<String> dataArray=new ArrayList<String>(); public ImageAndTextListAdapter(Activity activity, List<String> imageAndTexts, ListView listView) { this.listView = listView;
asyncImageLoader = new AsyncImageLoader();
inflater = activity.getLayoutInflater();
//dbu=new DBUtil();
dataArray=imageAndTexts;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return dataArray.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
if(position >= getCount()){
return null;
}
return dataArray.get(position);
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
} //不需要ViewHolder版,直接将ImageAndText与XML资源关联起来
public View getView(int position, View convertView, ViewGroup parent)
{
if (convertView == null)
{
convertView = inflater.inflate(R.layout.pulldown_item, null);
}
convertView.setTag(position);
//{
int i=(position+1)*6;
if(i<=dataArray.size())
{
TextView textView0 = (TextView) convertView.findViewById(R.id.txt_id);
TextView textView = (TextView) convertView.findViewById(R.id.txt_Cno1);
TextView textView1 = (TextView) convertView.findViewById(R.id.txt_Cname1);
TextView textView2= (TextView) convertView.findViewById(R.id.txt_Cnum1);
TextView textView3 = (TextView) convertView.findViewById(R.id.txt_isnuanqi1);
// 将XML视图项与用户输入的URL和文本在绑定
textView0.setText(dataArray.get(i-6).toString());
textView.setText(dataArray.get(i-5).toString());//加载TEXT
textView1.setText(dataArray.get(i-4).toString());
textView2.setText(dataArray.get(i-3).toString());
textView3.setText(dataArray.get(i-2).toString());
String imageUrl =dataArray.get(i-1).toString();
ImageView iv = (ImageView) convertView.findViewById(R.id.imageView1);
iv.setBackgroundResource(R.drawable.rc_item_bg);
//System.out.print(dataArray.toArray().toString());
asyncImageLoader.loadDrawable(position,imageUrl, new ImageCallback()
{
@Override
public void onImageLoad(Integer pos, Drawable drawable)
{
View view = listView.findViewWithTag(pos);
System.out.print(dataArray.get(pos).toString()+"---------------------asdfadsfsdafsdafsdaf----------------");
if(view != null)
{
ImageView iv = (ImageView) view.findViewById(R.id.imageView1);
iv.setBackgroundDrawable(drawable);
}
}
//加载不成功的图片处理
@Override
public void onError(Integer pos)
{
View view = listView.findViewWithTag(pos);
if(view != null)
{
ImageView iv = (ImageView) view.findViewById(R.id.imageView1);
iv.setBackgroundResource(R.drawable.rc_item_bg);
}
}
});}
return convertView;
}
}