Android listview的无休止滚动

Android listview的无休止滚动,android,json,listview,Android,Json,Listview,我有一个使用自定义适配器的listview,现在我希望它显示前五个条目,并在向下滚动时加载其他条目,最简单的方法是什么 如果我的列表代码是 public class Second extends Activity { static final String Li_nk="LinkName:"; static final String Image_name="ImageName:"; //ListView list; public final static String AUTH = "aut

我有一个使用自定义适配器的listview,现在我希望它显示前五个条目,并在向下滚动时加载其他条目,最简单的方法是什么

如果我的列表代码是

public class Second extends Activity  {

static final String Li_nk="LinkName:";
static final String Image_name="ImageName:";
//ListView list;
public final static String AUTH = "authentication";
static final String KEY_THUMB_URL = "thumb_image";      //Uri.decode("http://zeesms.info/android_app_images/Koala.jpg");
//JSONObject j2;
String wrd;
//ArrayList<HashMap<String,String>> mylist;
@Override
public void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    Intent i2=getIntent();
     wrd=i2.getStringExtra("entrd");
    Log.v("keyis",wrd);



    final Handler handler = new Handler();
    Runnable runable = new Runnable() {

        @Override
        public void run() {

            //call the function
            LoadData();
            //also call the same runnable
            handler.postDelayed(this, 40000);
        }
    };
    handler.postDelayed(runable, 10);

}public void LoadData(){


     JSONObject j2=JSONfunctions.getJSONfromURL("/webservice_search.php?keyword="+wrd+"&format=json");
     ArrayList<HashMap<String,String>> mylist = new  ArrayList<HashMap<String,String>>();

     try{JSONArray jray=j2.getJSONArray("listings");
        for(int i=0;i<jray.length();i++){
            Log.v("state","json data being read");
            JSONObject j3= jray.getJSONObject(i);
            String first=j3.getString("listing");
            Log.v("sublist", first);
            JSONObject j4=j3.getJSONObject("listing");
            String sec=j4.getString("links");

            int maxLength = (sec.length() < 30)?sec.length():27;
            sec.substring(0, maxLength);
            String cutsec=sec.substring(0,maxLength);
            Log.v("links are",cutsec);
            String img=j4.getString("image_name");
            Log.v("image name is ",img);
            //Uri dimg=Uri.parse("http://zeesms.info/android_app_images/Koala.jpg");
            HashMap<String,String> map=new HashMap<String,String>();

            map.put("Id",String.valueOf(i));
            map.put(Li_nk,cutsec);
            map.put(Image_name,j4.getString("image_name"));

            map.put(KEY_THUMB_URL,"http://zeesms.info/android_app_images/"+img);

             mylist.add(map);

        }

        }
        catch(JSONException e){

            Log.e("loG_tag","Error parsing"+e.toString());
        }
     LazyAdapter adapter = new LazyAdapter(this,mylist);
     adapter.notifyDataSetChanged();
    // list.setSelection(positionToMove);

        ListView list=(ListView)findViewById(R.id.lv1);
         list.setEmptyView(findViewById(R.id.empty));
         list.setAdapter(adapter);

        // list.setStackFromBottom(true);
            list.setItemsCanFocus(false);
           // list.smoothScrollToPosition(3,5);
            list.setOnItemClickListener(new AdapterView.OnItemClickListener(){

                @Override
                public void onItemClick(AdapterView<?> parent, View view,
                        int position, long id) {
                    //Toast.makeText(getApplicationContext(),"Click ListItem Number " + position, Toast.LENGTH_LONG).show();
                    Intent myIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.riffre.com/"));
                    startActivity(myIntent);
                }

            });
           list.setOnScrollListener(new OnScrollListener(){

            @Override
            public void onScroll(AbsListView view, int firstVisibleItem,
                    int visibleItemCount, int totalItemCount) {
                // TODO Auto-generated method stub

            }

            @Override
            public void onScrollStateChanged(AbsListView view,
                    int scrollState) {
                // TODO Auto-generated method stub

            }

           });
}
公共类第二次扩展活动{
静态最终字符串Li_nk=“LinkName:”;
静态最终字符串Image_name=“ImageName:”;
//列表视图列表;
公共最终静态字符串AUTH=“authentication”;
静态最终字符串键\u THUMB\u URL=“THUMB\u image”//Uri.decode(“http://zeesms.info/android_app_images/Koala.jpg");
//JSONObject j2;
字符串wrd;
//ArrayList mylist;
@凌驾
创建时的公共void(Bundle savedInstanceState){
//TODO自动生成的方法存根
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Intent i2=getIntent();
wrd=i2.getStringExtra(“entrd”);
Log.v(“keyis”,wrd);
最终处理程序=新处理程序();
Runnable Runnable=新的Runnable(){
@凌驾
公开募捐{
//调用函数
LoadData();
//也可以调用相同的runnable
handler.postDelayed(这是40000);
}
};
handler.postDelayed(可运行,10);
}公共void LoadData(){
JSONObject j2=JSONfunctions.getJSONfromURL(“/webservice_search.php?关键字=“+wrd+”&format=json”);
ArrayList mylist=新的ArrayList();
试试{jsonarrayjray=j2.getJSONArray(“清单”);

对于(int i=0;i如果您从网络加载项目(因此预计会有时间延迟),请检查此库项目:


这是一个很棒的拉刷新listview项目,但它也提供了从底部拉刷新的功能。因此,您可以使用该功能加载更多项目。但此功能需要用户执行明确的拉操作。

通过将我的列表声明为全局变量找到了解决方案。无论如何,感谢您的帮助。

可能与我的runn相同也可以在间隔后更新列表,因此代码有点混乱,我应该如何在不造成任何扭曲的情况下进行实现?基本上,我想要的是在不改变API的情况下获得无休止的滚动
public class LazyAdapter extends BaseAdapter {
private Activity activity;
private ArrayList<HashMap<String, String>> data;
private static LayoutInflater inflater=null;
public ImageLoader imageLoader; 


public LazyAdapter(Activity a, ArrayList<HashMap<String, String>> d) {
    activity = a;
    data=d;
    Collections.reverse(d);
    inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    imageLoader=new ImageLoader(activity.getApplicationContext());
}

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

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

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



@Override
public View getView(int position, View convertView, ViewGroup parent) {
    View vi=convertView;
    if(convertView==null)

        vi = inflater.inflate(R.layout.custom_row_view1, null);

    TextView title = (TextView)vi.findViewById(R.id.linkname); // merchnts name
    TextView artist = (TextView)vi.findViewById(R.id.imagename); // address
    //TextView duration = (TextView)vi.findViewById(R.id); // distance
   ImageView thumb_image=(ImageView)vi.findViewById(R.id.mClogo); // logo

    HashMap<String, String> jsn = new HashMap<String, String>();
    jsn = data.get(position);

    // Setting all values in listview
   title.setText(jsn.get(Second.Li_nk));
   artist.setText(jsn.get(Second.Image_name));
    //duration.setText(song.get(CustomizedListView.KEY_DURATION));
    imageLoader.DisplayImage(jsn.get(Second.KEY_THUMB_URL), thumb_image);
    return vi;
}

}