动态列表视图在滚动结束时添加“加载更多项目”

时间:2016-06-21 13:10:14

标签: android listview dynamic-loading

我有一个listview从Json的sql数据库中获取数据。

我想将其转换为动态列表视图,在滚动结束时,在加载更多项目并将其添加到适配器时(例如,每次10个项目),列表的页脚中会出现“加载更多项目”。我在实现此功能时遇到问题。请帮帮我。谢谢。

活动类:

public class MoreVideos extends ListActivity {
int i =1;
private int dateCode = 1;
private ListArrayAdapter listAdapter = null;
private ProgressDialog pDialog = null;
private String id;

@SuppressWarnings("unused")
ArrayList<videoDto> aryLists =null;
String getDate;


protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.more_video);
    id=getIntent().getStringExtra("id");
    pDialog = new ProgressDialog(getApplicationContext());
    pDialog.setMessage("Loading....");
    pDialog.setCancelable(true);
    loadCategoriesAsync();

  };
    // TODO Auto-generated method stub
protected void loadCategoriesAsync() {

    loadCategoriesTaskHandler task = new loadCategoriesTaskHandler();
    if (Build.VERSION.SDK_INT >= 11)
    {
        task.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
    }
    else
    {
        task.execute();
    }
 }

class loadCategoriesTaskHandler extends AsyncTask<videoDto, Void, String>
{
    @Override
    protected String doInBackground(videoDto... params)
{
    String results= "";
    try
    {
        videoDto videodto=new videoDto();

     //                         healthDto.getInfom(strEail.trim(),strPassword,getApplicationContext());
        aryLists = new ArrayList<videoDto>();
        aryLists=   videodto.getvideo(id);


    }
    catch (Exception e)
    {
        e.printStackTrace();
    }
    return results;
}

    @Override
    protected void onPostExecute(String result)
    {
        super.onPostExecute(result);

            if(aryLists!=null){

        listAdapter = new ListArrayAdapter(getApplicationContext(),         MoreVideos.this,
                        aryLists);
                setListAdapter(listAdapter);


            }else{
                Toast.makeText(getApplicationContext(), "ArrayList is null   ", Toast.LENGTH_SHORT).show();
            }

    }

    }

适配器类:

public class ListArrayAdapter extends ArrayAdapter<videoDto> {
    private final Context context;
    private MoreVideos _parent;

    public ListArrayAdapter(Context context, MoreVideos parent,
            ArrayList<videoDto> aryLog) {
        super(context, R.layout.video_listing, aryLog);
        this.context = context;
        this._parent = parent;
    }

    @SuppressLint("InflateParams")
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View rowView = convertView;

        if (rowView == null) {
            LayoutInflater inflate = (LayoutInflater) context
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            rowView = inflate.inflate(R.layout.video_listing,
                    null);

            ViewHolder viewHolder = new ViewHolder();

            viewHolder.index = (TextView) rowView
                    .findViewById(R.id.index);

            viewHolder.NameOfVideo = (TextView) rowView
                    .findViewById(R.id.txt_name_video);

            viewHolder.img = (ImageView) rowView
                    .findViewById(R.id.img_video);
            viewHolder.rel= (RelativeLayout)    rowView.findViewById(R.id.click);
            viewHolder.bookv = (ImageView)rowView.findViewById(R.id.bookv);
            //viewHolder.download =    (ImageView)rowView.findViewById(R.id.download);
            rowView.setTag(viewHolder);
            rowView.setTag(viewHolder);
        }

        ViewHolder holder = (ViewHolder) rowView.getTag();

        final videoDto userLog = (this._parent != null) ?       this._parent.listAdapter
                .getItem(position) : null;
                String currentPosition = Integer.toString(position);
        if (userLog != null) {
            try {

                try {
                /*  if(currentPosition.equals(""))
                     {
                      holder.index.setText("-----");
                     }
                     else
                     {
                          holder.index.setText(Integer.toString(Integer.parseInt(currentPosition) + 1));
                     }*/

                    holder.rel.setOnClickListener(new OnClickListener() {

                        @Override
                        public void onClick(View v) {
                            // TODO Auto-generated method stub
                            String name =userLog.link ;
                            /*try {
                                MediaPlayer player = new MediaPlayer();
                                  player.setAudioStreamType(AudioManager.STREAM_MUSIC);
                                   player.setDataSource("http://xty/MRESC/images/test/xy.mp3");
                                player.prepare();
                                player.start();    
                            } catch (Exception e) {
                                // TODO: handle exception
                            }*/

                            //Log.v("String ", speaker.vid);
                            Intent mainIntent = new    Intent(getApplicationContext(),VideoViewActivity.class);
                            mainIntent.putExtra("IMGNAME", name);
                            //Log.v("name",name);
                            // startActivity(new   Intent(Intent.ACTION_VIEW,Uri.parse(name)));
                            startActivity(mainIntent);

                        }
                    });
                    holder.bookv.setOnClickListener(new OnClickListener() 
                     {
                      @Override
                      public void onClick(View v) 
                      {
                      // String jobId = (String) v.getTag();
                            String name =userLog.link ;
                       videoDto videodto = (videoDto) v.getTag();
                       Intent intentJobApplicants = new    Intent(getApplicationContext(),VideoViewActivity.class);
                       intentJobApplicants.putExtra("IMGNAME",name);
                      // intentJobApplicants.putExtra("JobId", jobAp.id);

                       startActivity(intentJobApplicants);
                      }
                     });



                if (userLog.VideoText.equals("")) {
                    holder.NameOfVideo.setText("-----");
                } else {
                    holder.NameOfVideo.setText(userLog.VideoText);

                }
            i=i+1;
            Log.v("i",String.valueOf(i));

            } catch (Exception ex) {
                // Toast.makeText(context, ex.getMessage(),
                // Toast.LENGTH_SHORT).show();
            }


        if (position % 2 == 0) {
            rowView.setBackgroundColor(Color.LTGRAY);
        } else {
            rowView.setBackgroundColor(Color.WHITE);
        }





}catch(Exception ex){
    ex.printStackTrace();
}
        }
        return rowView;

}
}
}

查看持有人类:

public static class ViewHolder {
        protected TextView index;
        protected ImageView bookv;
        protected ImageView img;
        protected ImageView download;
        protected TextView NameOfVideo;
        protected RelativeLayout rel;

    }

0 个答案:

没有答案