listview滑动加载,不滑动不加载,这是俩个不同的布局,有疑问求前辈解答

qq_21206775 2016-07-29 02:36:03
运行起来,发现效果差很多,可是逻辑思路没问题啊,希望前辈指点迷津

MainActivity的内容:
package com.ex.listview_27;

import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;

import android.app.Activity;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.support.v4.view.ScrollingView;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AbsListView.OnScrollListener;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;

public class MainActivity extends Activity {

private ListView listview;
private MyAdapter myAdapter;
private String [] img_uri ={"http://7xku6s.com1.z0.glb.clouddn.com/qq0.png","http://7xku6s.com1.z0.glb.clouddn.com/qq1.png",
"http://7xku6s.com1.z0.glb.clouddn.com/qq2.png","http://7xku6s.com1.z0.glb.clouddn.com/qq3.png",
"http://7xku6s.com1.z0.glb.clouddn.com/qq4.png","http://7xku6s.com1.z0.glb.clouddn.com/qq5.png",
"http://7xku6s.com1.z0.glb.clouddn.com/aa.jpg","http://7xku6s.com1.z0.glb.clouddn.com/bb.jpg",
"http://7xku6s.com1.z0.glb.clouddn.com/cc.jpg","http://7xku6s.com1.z0.glb.clouddn.com/dd.jpg"};

public static String LAG = "MainActivity";

private ImageLoader imageLoader;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imageLoader = ImageLoader.getInstance();
imageLoader.init(ImageLoaderConfiguration.createDefault(MainActivity.this));
listview = (ListView) findViewById(R.id.listview);
myAdapter = new MyAdapter();
listview.setOnScrollListener(myAdapter);
listview.setAdapter(myAdapter);

}

class MyAdapter extends ScrollAdapter {

@Override
public int getCount() {
// TODO Auto-generated method stub
return Integer.MAX_VALUE;
}

@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return img_uri[position%10];
}

@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}

@Override
protected View getScrollView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
ViewHolder viewholder;
if(convertView==null){
convertView = getLayoutInflater().inflate(R.layout.defaultlayout, null);
viewholder = new ViewHolder();
viewholder.img_default = (ImageView)convertView.findViewById(R.id.img_default);
viewholder.tv_default = (TextView)convertView.findViewById(R.id.tv_default);
convertView.setTag(viewholder);
}else{
viewholder = (ViewHolder) convertView.getTag();
}
viewholder.img_default.setImageResource(R.drawable.ic_launcher);
viewholder.tv_default.setText("加载中。。。");
return convertView;
}

@Override
protected View getNomarlView(int position, View convertView, ViewGroup parent) {
ViewHolder viewholder;
if(convertView==null){
convertView = getLayoutInflater().inflate(R.layout.defaultlayout, null);
viewholder = new ViewHolder();
viewholder.img_default = (ImageView)convertView.findViewById(R.id.img_default);
viewholder.tv_default = (TextView)convertView.findViewById(R.id.tv_default);
convertView.setTag(viewholder);
}else{
viewholder = (ViewHolder) convertView.getTag();
}
imageLoader.displayImage(img_uri[position%10], viewholder.img_default);
viewholder.tv_default.setText(position+"");
return convertView;
}

class ViewHolder{
ImageView img_default;
TextView tv_default;
}




}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}


ScrollAdapter:
package com.ex.listview_27;

import java.util.HashMap;

import android.R.integer;
import android.util.Log;
import android.util.SparseBooleanArray;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AbsListView;
import android.widget.AbsListView.OnScrollListener;
import android.widget.BaseAdapter;

public abstract class ScrollAdapter extends BaseAdapter implements OnScrollListener
{
protected abstract View getScrollView(int position, View convertView, ViewGroup parent);

protected abstract View getNomarlView(int position, View convertView, ViewGroup parent);

private boolean mIsScroll;
// private SparseBooleanArray mIsScrollArray;


// public ScrollAdapter()
// {
// mIsScrollArray = new SparseBooleanArray();
// }


@Override
public final View getView(int position, View convertView, ViewGroup parent)
{
// mIsScrollArray.put(position, mIsScroll);
Log.e("getView", "getView " +Utils.hashMap.get(position));
if (!mIsScroll)
{

Utils.hashMap.put(position, "1");
Log.e("getView", "getView " +Utils.hashMap.get(position));
return getNomarlView(position, convertView, parent);
}
// Utils.hashMap.put(position, "2");
Log.e("getView", "getView " +Utils.hashMap.get(position));
return getScrollView(position, convertView, parent);

}

@Override
public void onScrollStateChanged(AbsListView parent, int scrollState)
{
switch (scrollState)
{
case OnScrollListener.SCROLL_STATE_IDLE:
mIsScroll = false;
int first = parent.getFirstVisiblePosition();
int count = parent.getChildCount();

for (int position = first; position < count; position++)
{
// if (mIsScroll)
// {
// break;
// }
// try
// {
Log.e("getView", "getView " +Utils.hashMap.get(position));
View convertView = parent.getChildAt(position);
if (!("1").equals("1"))
{
// mIsScrollArray.put(position, false);
getNomarlView(position, convertView, parent);
Utils.hashMap.put(position, "1");
}
// } catch (Exception e)
// {
// }
}
break;
case OnScrollListener.SCROLL_STATE_TOUCH_SCROLL:
mIsScroll = true;
break;
case OnScrollListener.SCROLL_STATE_FLING:
mIsScroll = true;
break;
}
}

@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount)
{
}
}


utils :
package com.ex.listview_27;

import java.util.HashMap;

public class Utils {

public static HashMap<Integer, String> hashMap = new HashMap<Integer, String>();

}


activity_main 布局
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.ex.listview_27.MainActivity" >

<ListView
android:id="@+id/listview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true" >

</ListView>

</RelativeLayout>

default_layout:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<ImageView
android:id="@+id/img_default"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="31dp"
android:layout_marginTop="161dp"
android:src="@drawable/ic_launcher" />

<TextView
android:id="@+id/tv_default"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/imageView1"
android:layout_alignParentRight="true"
android:layout_marginBottom="36dp"
android:layout_marginRight="30dp"
android:text="加载中。。。" />

</RelativeLayout>


...全文
160 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_21206775 2016-08-01
  • 打赏
  • 举报
回复
卡在了运行起来后,没滑,范围可见内的都正常,但是一滑,然后滑动停止,他显示的是正在加载,这时应该是加载完图片,显示图片的现象
tudouzi007 2016-08-01
  • 打赏
  • 举报
回复
你现在卡在哪?啥问题描述没有就一堆代码 看着脑袋就疼
qq_21206775 2016-08-01
  • 打赏
  • 举报
回复
都没人解答吗?
qq_21206775 2016-07-29
  • 打赏
  • 举报
回复
为什么运行起来,可见范围内的下一个开始不正常,想了好久,都没明白

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧