无尽的滚动列表视图 [英] Endless scrolling for listview

查看:148
本文介绍了无尽的滚动列表视图的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有利用自定义适配器列表视图,现在我想让它显示的前五个条目并加载别人当我向下滚动,有什么要做到这一点最简单的方法是什么?

I have a listview utilizing a custom adapter, now I want it to show the first five entries and load the others when I scroll down, what's the simplest way to do this?

如果我的code的名单

If my code for the list is

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

            }

           });
}

和code适配器类扩展baseadapter是

and the code for the adapter class extending baseadapter is

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;
}

}

和我有不同的类解析JSON数据在列表中。那么,什么是执行无尽的滚动最简单的方法?

and I have a different class for parsing the json data in the list. So what would be the simplest way to implement endless scrolling?

任何帮助将是很大的AP preciated ...

Any help would be greatly appreciated...

推荐答案

找到了解决办法,宣布我的列表作为一个全局变量。不管怎样,谢谢您的帮助。

Found the solution by declaring my list as a global variable. Thanks anyway for your help.

这篇关于无尽的滚动列表视图的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆