Android ListView] ListView应显示前10个结果,然后它应显示类似" LoadMore"当我点击“LoadMore”选项'然后listview将再显示10个结果,再次显示" LoadMore"选项应该显示..怎么做。
XML
public void setData() {
mobileList = new ArrayList<String>();
mAdapter = new ListAdapter(this);
for (int i = 0; i < str.length; i++) {
mAdapter.addItem(str[i]);
mobileList.add(str[i]);
}
Button btnLoadMore = new Button(this);
btnLoadMore.setText("Load More");
lv.addFooterView(btnLoadMore);
lv.setAdapter(mAdapter);
btnLoadMore.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// Starting a new async task
//new loadMoreListView().execute();
}
});
AdapterClass
set
ActivityClass
setlocal enabledelayedexpansion
set objdir=U:\mtproject\obj\
set backupdir=E:\backupDir\DefBackup\
for /r %objdir% %%f in (*.def) do (
set new_def_path=%backupdir%!%%f:%objdir%=!
echo !new_def_path!
)
现在我还需要做些什么来展示loadmore选项
答案 0 :(得分:1)
为ListView添加FooterView,如下所示
lv.addFooterView(footerView);
将按钮作为footerView并写入 onClick ()以加载剩余的项目。
更新:
您正在将数据存储在ArrayList中,但您没有在任何地方使用,只需在 onClick ()
中编写以下内容for (int i = 0; i < str.length; i++) {
mAdapter.addItem(str[i]);
}
希望这会对你有所帮助。
答案 1 :(得分:0)
只需使用此代码...我已根据您的问题编辑了您的代码......
public class ListAdapter extends BaseAdapter {
private ArrayList<String> mData;// = new ArrayList<String>();
private LayoutInflater mInflater;
public ListAdapter(Context context,ArrayList<String> data) {
mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
mData=data;
}
public void addItem(String item) {
mData.add(item);
notifyDataSetChanged();
}
public int getCount() {
return mData.size();
}
public String getItem(int position) {
return mData.get(position);
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
View row=convertView;
if (row == null) {
row=mInflater.inflate(R.layout.mobile_page, parent, false);
holder=new ViewHolder(row);
row.setTag(holder);
} else {
holder = (ViewHolder) row.getTag();
}
holder.textView.setText(mData.get(position).toString());
return row;
}
public class ViewHolder {
public TextView textView;
public ViewHolder(View v) {
textView=(TextView)v.findViewById(R.id.text);
}
}
}
package com.example.androidexam;
import java.util.ArrayList;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
public class MainActivity extends Activity {
String str[]={"0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20",
"21","22","23","24","25","26","27","28","29"};
ListAdapter mAdapter;
ArrayList<String> mobileList;
int index=0;
ListView lv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lv=(ListView)findViewById(R.id.subCategory);
setData();
}
public void setData() {
mobileList = new ArrayList<String>();
if(str.length<=10)
{
for (int i = 0; i < str.length; i++) {
/* mAdapter.addItem(str[i]);*/
mobileList.add(str[i]);
}
}else
{
for (int i = 0; i <10; i++) {
/* mAdapter.addItem(str[i]);*/
mobileList.add(str[i]);
index=i;
}
}
mAdapter=new ListAdapter(this, mobileList);
Button btnLoadMore = new Button(this);
btnLoadMore.setText("Load More");
lv.setAdapter(mAdapter);
lv.addFooterView(btnLoadMore);
btnLoadMore.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
for (int i = index+1; i < str.length; i++) {
/* mAdapter.addItem(str[i]);*/
mobileList.add(str[i]);
index=i;
if((i+1)%10==0)
break;
}
mAdapter=new ListAdapter(MainActivity.this, mobileList);
lv.setAdapter(mAdapter);
}
});
}
}