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