Android 如何将数据从适配器插入listview

Android 如何将数据从适配器插入listview,android,adapter,Android,Adapter,在我的活动中,有一个适配器包含25个项目,还有一个listview。我想在listview中插入5个项目,如果我按Activity中的next按钮,页面将重新加载接下来的5个项目,依此类推。更改适配器中的项目,然后在适配器上调用notifyDataSetChanged() adapter.clear(); adapter.addAll(nextFiveElements); adapter.notifyDataSetChanged(); 另外,在使用ViewHolder模式时要谨慎。实现getV

在我的活动中,有一个适配器包含25个项目,还有一个listview。我想在listview中插入5个项目,如果我按Activity中的next按钮,页面将重新加载接下来的5个项目,依此类推。

更改适配器中的项目,然后在适配器上调用notifyDataSetChanged()

adapter.clear();
adapter.addAll(nextFiveElements);
adapter.notifyDataSetChanged();
另外,在使用ViewHolder模式时要谨慎。实现getView()时,使用此设计模式将节省大量内存:


更改适配器中的项目,然后在适配器上调用notifyDataSetChanged()

adapter.clear();
adapter.addAll(nextFiveElements);
adapter.notifyDataSetChanged();
另外,在使用ViewHolder模式时要谨慎。实现getView()时,使用此设计模式将节省大量内存:


您不应该不必要地将所有25项添加到适配器中。仅添加五个值

    static int pageNo. = 0 ;
    final int pageSize = 5;
    btn.onClick()
    {
    pageNo.+=;
    for(int i = pageNo. ;i<pageN0. + pageSize;i++)
    {
    adapter.add(*i'th value*);
    //modify syntext as per need 
    }
static int pageNo.=0 ;
最终int pageSize=5;
btn.onClick()
{
页码+=;

对于(int i=pageNo.;i您不应该不必要地将所有25项添加到适配器。只添加五个值

    static int pageNo. = 0 ;
    final int pageSize = 5;
    btn.onClick()
    {
    pageNo.+=;
    for(int i = pageNo. ;i<pageN0. + pageSize;i++)
    {
    adapter.add(*i'th value*);
    //modify syntext as per need 
    }
static int pageNo.=0;
最终int pageSize=5;
btn.onClick()
{
页码+=;

对于(inti=pageNo.;i您必须保持数组的位置

我已经创建了一个演示适配器,您可以看到

private static final int NO_OF_ITEMS_IN_PAGE = 5;
pivate static int currentPageNo = 0;

public class MyAdapter extends BaseAdapter {

    ArrayList<String> arrNotes;
    LayoutInflater inflater;
    public MyAdapter(Context c, ArrayList<String> arrNotes) {
        this.arrNotes = arrNotes;
        inflater = ((Activity) c).getLayoutInflater();
    }

    @Override
    public int getCount() {
        return NO_OF_ITEMS_IN_PAGE;
    }

    @Override
    public Object getItem(int position) {
        int actualPosition = currentPageNo * NO_OF_ITEMS_IN_PAGE + position;
        return arrTodaysMedicines.get(actualPosition);
    }

    @Override
    public long getItemId(int arg0) {
        return arg0;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup arg2) {
        int actualPosition = currentPageNo * NO_OF_ITEMS_IN_PAGE + position;
        String strNote = arrNotes.get(actualPosition);
        if(convertView == null) {
            convertView = inflater.inflate(R.layout.note_list, null);
        }
        TextView tvTitle = 
             (TextView) convertView.findViewById(R.id.tvTitle);

        tvTitle.setText(strNote);
        return convertView;
    }

}
private static final int NO_OF_ITEMS_IN_PAGE=5;
pivate静态int currentPageNo=0;
公共类MyAdapter扩展了BaseAdapter{
arraylistarrnotes;
充气机;
公共MyAdapter(上下文c、ArrayList arrNotes){
this.arrNotes=arrNotes;
充气器=((活动)c).getLayoutFlater();
}
@凌驾
public int getCount(){
返回\u页面中\u项的\u;
}
@凌驾
公共对象getItem(int位置){
int actualPosition=currentPageNo*页面中的项目数量+位置;
返回arrTodaysMedicines.get(实际位置);
}
@凌驾
公共长getItemId(int arg0){
返回arg0;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组arg2){
int actualPosition=currentPageNo*页面中的项目数量+位置;
字符串strNote=arrNotes.get(实际位置);
if(convertView==null){
convertView=充气机。充气(R.layout.note_列表,空);
}
文本视图标题=
(TextView)convertView.findViewById(R.id.tvTitle);
tvTitle.setText(strNote);
返回视图;
}
}

您必须保持阵列的位置

我已经创建了一个演示适配器,您可以看到

private static final int NO_OF_ITEMS_IN_PAGE = 5;
pivate static int currentPageNo = 0;

public class MyAdapter extends BaseAdapter {

    ArrayList<String> arrNotes;
    LayoutInflater inflater;
    public MyAdapter(Context c, ArrayList<String> arrNotes) {
        this.arrNotes = arrNotes;
        inflater = ((Activity) c).getLayoutInflater();
    }

    @Override
    public int getCount() {
        return NO_OF_ITEMS_IN_PAGE;
    }

    @Override
    public Object getItem(int position) {
        int actualPosition = currentPageNo * NO_OF_ITEMS_IN_PAGE + position;
        return arrTodaysMedicines.get(actualPosition);
    }

    @Override
    public long getItemId(int arg0) {
        return arg0;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup arg2) {
        int actualPosition = currentPageNo * NO_OF_ITEMS_IN_PAGE + position;
        String strNote = arrNotes.get(actualPosition);
        if(convertView == null) {
            convertView = inflater.inflate(R.layout.note_list, null);
        }
        TextView tvTitle = 
             (TextView) convertView.findViewById(R.id.tvTitle);

        tvTitle.setText(strNote);
        return convertView;
    }

}
private static final int NO_OF_ITEMS_IN_PAGE=5;
pivate静态int currentPageNo=0;
公共类MyAdapter扩展了BaseAdapter{
arraylistarrnotes;
充气机;
公共MyAdapter(上下文c、ArrayList arrNotes){
this.arrNotes=arrNotes;
充气器=((活动)c).getLayoutFlater();
}
@凌驾
public int getCount(){
返回\u页面中\u项的\u;
}
@凌驾
公共对象getItem(int位置){
int actualPosition=currentPageNo*页面中的项目数量+位置;
返回arrTodaysMedicines.get(实际位置);
}
@凌驾
公共长getItemId(int arg0){
返回arg0;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组arg2){
int actualPosition=currentPageNo*页面中的项目数量+位置;
字符串strNote=arrNotes.get(实际位置);
if(convertView==null){
convertView=充气机。充气(R.layout.note_列表,空);
}
文本视图标题=
(TextView)convertView.findViewById(R.id.tvTitle);
tvTitle.setText(strNote);
返回视图;
}
}