gpt4 book ai didi

java - 尝试隐藏 ListView ,直到列表完全填充android

转载 作者:行者123 更新时间:2023-12-01 13:17:11 25 4
gpt4 key购买 nike

我想尝试在 android 中填充 ListView ,但我不希望在列表完成之前显示列表。我已经制定了一种可行的方法,但其编码非常糟糕,并且想要更改它。

这是我的代码:

public class Admin extends ListActivity 
{
static java.sql.Connection con;
static java.sql.Statement stmt = null;
static java.sql.ResultSet rs = null;
String user = null;
//public final static String Username = "com.example.securelogin.Username";
Button EditButton;



// Progress Dialog
private ProgressDialog pDialog;

final Vector<String> users = new Vector<String>();
boolean ready = false;
int counter = 0;

@SuppressWarnings("unchecked")
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_admin);
EditButton = (Button) findViewById(R.id.button2);
EditButton.setOnClickListener(onUpdate);


counter++;
for(int i = 0; i < 1; i++)
{
new Listview().execute();
while(!ready)
{

}

}
setListAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, users));
}


public void onListItemClick(ListView parent, View v,int position, long id)
{
super.onListItemClick(parent, v, position, id);
user = users.get(position);
Toast.makeText(this, "You have selected " + users.get(position), Toast.LENGTH_SHORT).show();


}

class Listview extends AsyncTask<Vector<String>, String, Vector<String>>
{
boolean failure = false;

@Override
protected void onPreExecute()
{
super.onPreExecute();
pDialog = new ProgressDialog(Admin.this);
pDialog.setMessage("Gathering Data");
pDialog.setIndeterminate(false);
pDialog.setCancelable(true);
pDialog.show();
}

@Override
protected Vector<String> doInBackground(Vector<String>... params)
{
try
{
rs = Database.ListUsers();
System.out.println("Executed statement");
while(rs.next())
{
String Description = rs.getString(1);
users.add(Description);
System.out.println("In the while loop");
}

System.out.println("you got past the statement");
ready = true;

}
catch (SQLException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
return users;

}

protected void onPostExecute(Vector<String> names)
{
// dismiss the dialog once product deleted
pDialog.dismiss();
}

}

private View.OnClickListener onUpdate= new View.OnClickListener()
{

@Override
public void onClick(View v)
{
if(user == null)
{
return;
}
else
{
Intent i = new Intent(Admin.this, EditUser.class);
i.putExtra("Username",user );
System.out.println(user);
finish();
startActivity(i);
}

}
};
}

最佳答案

我建议您使用ListFragment .

如果您检查文档,就会发现有一个 setListShown(boolean shown)setListShownNoAnimation(boolean shown)。这些方法非常方便,因为与 ListFragment 关联的布局已经在 fragment 中心有一个不确定的 ProgressBar,并且还允许您设置空文本。

基本上,您可以开始加载(当用户在屏幕上观看进度时),当加载完成时,您可以调用上面的两个方法之一并显示结果。

编辑:使用该 fragment 的另一个原因是,如果您想支持平板电脑并遵循 Android 设计规则,通过它们会变得更容易,使您的组件更可重用。

如果需要支持旧版本的平台,请使用支持库提供的ListFragment。

关于java - 尝试隐藏 ListView ,直到列表完全填充android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22374356/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com