Android 使用页脚中的“进度”对话框
我正在制作一个应用程序,其中我必须在页脚视图中添加进度对话框,但无法在页脚视图中获取任何进度对话框: 主要活动: 我想在此类的页脚中添加进度对话框Android 使用页脚中的“进度”对话框,android,footer,progressdialog,Android,Footer,Progressdialog,我正在制作一个应用程序,其中我必须在页脚视图中添加进度对话框,但无法在页脚视图中获取任何进度对话框: 主要活动: 我想在此类的页脚中添加进度对话框 public class MainActivity extends Activity implements OnScrollListener { // All variables XmlParser parser; Document doc; String xml; ListView lv; ListViewAdapter adapter; Arr
public class MainActivity extends Activity implements OnScrollListener {
// All variables
XmlParser parser;
Document doc;
String xml;
ListView lv;
ListViewAdapter adapter;
ArrayList<HashMap<String, String>> menuItems;
ProgressDialog pDialog;
private String URL = "http://api.androidhive.info/list_paging/?page=1";
// XML node keys
static final String KEY_ITEM = "item"; // parent node
static final String KEY_ID = "id";
static final String KEY_NAME = "name";
ProgressDialog dialog;
// Flag for current page
int current_page = 1;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
lv = (ListView) findViewById(R.id.list);
menuItems = new ArrayList<HashMap<String, String>>();
parser = new XmlParser();
xml = parser.getXmlFromUrl(URL); // getting XML
doc = parser.getDomElement(xml); // getting DOM element
NodeList nl = doc.getElementsByTagName(KEY_ITEM);
// looping through all item nodes <item>
for (int i = 0; i < nl.getLength(); i++) {
// creating new HashMap
HashMap<String, String> map = new HashMap<String, String>();
Element e = (Element) nl.item(i);
// adding each child node to HashMap key => value
map.put(KEY_ID, parser.getValue(e, KEY_ID)); // id not using any where
map.put(KEY_NAME, parser.getValue(e, KEY_NAME));
// adding HashList to ArrayList
menuItems.add(map);
}
// LoadMore button
dialog=new ProgressDialog(this);
// Button btnLoadMore = new Button(this);
//btnLoadMore.setText("Load More");
// Adding Load More button to lisview at bottom
// lv.addFooterView(dialog);
// I want to use Progress Dialog in footer
/* lv.addFooterView(dialog);*/
// Getting adapter
adapter = new ListViewAdapter(this, menuItems);
lv.setAdapter(adapter);
lv.setOnScrollListener(this);
lv.addFooterView(dialog.getListView());
/**
* Listening to Load More button click event
* */
if(dialog.isShowing())
{
}
/* btnLoadMore.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) {
// Starting a new async task
new loadMoreListView().execute();
}
});*/
/**
* Listening to listview single row selected
* **/
lv.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// getting values from selected ListItem
String name = ((TextView) view.findViewById(R.id.name))
.getText().toString();
// Starting new intent
Intent in = new Intent(getApplicationContext(),
Test123.class);
in.putExtra(KEY_NAME, name);
startActivity(in);
}
});
}
/**
* Async Task that send a request to url
* Gets new list view data
* Appends to list view
* */
private class loadMoreListView extends AsyncTask<Void, Void, Void> {
@Override
protected void onPreExecute() {
// Showing progress dialog before sending http request
if(dialog.isShowing())
{
dialog.cancel();
}
else
{
pDialog = new ProgressDialog(
MainActivity.this);
pDialog.setMessage("Please wait..");
pDialog.setIndeterminate(true);
pDialog.setCancelable(false);
pDialog.show();
}
}
protected Void doInBackground(Void... unused) {
runOnUiThread(new Runnable() {
public void run() {
// increment current page
current_page += 1;
// Next page request
URL = "http://api.androidhive.info/list_paging/?page=" + current_page;
xml = parser.getXmlFromUrl(URL); // getting XML
doc = parser.getDomElement(xml); // getting DOM element
NodeList nl = doc.getElementsByTagName(KEY_ITEM);
// looping through all item nodes <item>
for (int i = 0; i < nl.getLength(); i++) {
// creating new HashMap
HashMap<String, String> map = new HashMap<String, String>();
Element e = (Element) nl.item(i);
// adding each child node to HashMap key => value
map.put(KEY_ID, parser.getValue(e, KEY_ID));
map.put(KEY_NAME, parser.getValue(e, KEY_NAME));
// adding HashList to ArrayList
menuItems.add(map);
}
// get listview current position - used to maintain scroll position
int currentPosition = lv.getFirstVisiblePosition();
// Appending new data to menuItems ArrayList
adapter = new ListViewAdapter(
MainActivity.this,
menuItems);
lv.setAdapter(adapter);
// Setting new scroll position
lv.setSelectionFromTop(currentPosition + 1, 0);
}
});
return (null);
}
protected void onPostExecute(Void unused) {
// closing progress dialog
pDialog.dismiss();
}
}
public void onScroll(AbsListView arg0, int arg1, int arg2, int arg3) {
// TODO Auto-generated method stub
dialog.show();
lv.setOnScrollListener(this);
lv.addFooterView(dialog.getListView());
new loadMoreListView().execute();
}
public void onScrollStateChanged(AbsListView arg0, int arg1) {
// TODO Auto-generated method stub
new loadMoreListView().execute();
}
}
任何帮助都将不胜感激。您可以尝试以下方法:
ProgressDialog myDialog = ProgressDialog.show(MyActivity.this, "Display Information","atthe bottom...", true);
myDialog.getWindow().setGravity(Gravity.BOTTOM);
您可以编写具有特殊操作和行为的简单/增强型自定义控件。例如,此线程上的完整菜单系统 增强的布局比上面链接中的菜单更简单。 创建类似progressDialog的窗口的一些要点:
- 将FrameLayout用作根视图
- 在XML布局文件中进行设计
- 在FrameLayout的子类中对其进行充气(在构造函数中)
- 提供一些方法,如
、show()
、hide()
或您需要的所有其他方法,并实现这些操作stop()
- 将布局传递给自定义控件以用作其父控件
public void addTo(ViewGroup viewgroup){ viewgroup.addView(this); }
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
<ProgressBar
android:id="@+id/progressBar1"
style="?android:attr/progressBarStyleSmall"
android:indeterminate="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView" />
</LinearLayout>
在执行setadapter之前,只能执行addFooterView 我只想滚动显示进度对话框
public void addTo(ViewGroup viewgroup){
viewgroup.addView(this);
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
<ProgressBar
android:id="@+id/progressBar1"
style="?android:attr/progressBarStyleSmall"
android:indeterminate="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView" />
</LinearLayout>
view = getLayoutInflater().inflate(R.layout.pb_layout, null);
TextView tv = (TextView)view.findViewById(R.id.textView1);
tv.setText("Please wait..");
ProgressBar pb = (ProgressBar)view.findViewById(R.id.progressBar1);
pb.setIndeterminate(true);
lv.addFooterView(view);