本教程使用SimpleAdapter工作正常,但我需要在输入新数据时更新适配器中的数组.
你能否指导我如何使用SimpleAdapter以外的东西更新ListView?
在Android的ListView小部件中,ListView将保存从getView内部类中的适配器方法获得的视图RecycleBin.
如何清除视图RecycleBin并强制ListView重新创建所有子视图.
我有一个充满自定义的列表ArrayAdapter.
我想每秒更新一个进度条,所以我试图使用notifyDataSetChanged()以重新绘制列表,但它似乎不起作用.
我在使用BaseAdapter的notifyDataSetChanged()时遇到了一些麻烦.此方法在refreshItems()中调用,并将更新ListActivity的BaseAdapter.在调用notifyDataSetChanged()之前没有任何反应,直到我使用箭头键向下滚动ListView.不知怎的,修改后的getView()方法也没有被调用.也许你可以给我一个提示 - 谢谢!:)
public class WinampControlClientPlaylist extends ListActivity {
static WinampControlClientPlaylist activity = null;
static EfficientAdapter adapter = null;
static class EfficientAdapter extends BaseAdapter {
public EfficientAdapter(Context context) {
mInflater = LayoutInflater.from(context);
}
private LayoutInflater mInflater;
@Override
public int getCount() {
return Settings.playlistlength;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null)
{
holder = new ViewHolder();
convertView = mInflater.inflate(R.layout.listview, null);
holder.text …Run Code Online (Sandbox Code Playgroud) 我正在做一个项目.它只是显示任务列表并向其添加新任务.我有3堂课.一个用于添加,一个用于查看,一个用于保存所有信息(或者我认为).
我的列表中已经有2个任务,并且显示正确.
问题是,当我添加一个新任务时,它不会在视图中显示它们.我尝试了很多可能的解决方案:
只需将项目添加到列表中
创建一个包含旧旧项目和重建适配器的新列表;
使用notifyDataSetChanged();沿着与附加()命令;
等等
这是我的代码,它有点乱,但我希望你能弄明白.
AndroidListAdapterActivity类:
public class AndroidListAdapterActivity extends ListActivity {
/** Called when the activity is first created. */
Button b1;
Lista o;
ArrayAdapter aa;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
b1=(Button)findViewById(R.id.add);
Log.w("POC", "PA OVO SE ZOVE SVAKI PUT");
o=new Lista();
o.lis.add("S1");
o.lis.add("S2");
aa = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, o.lis);
setListAdapter(aa);
b1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(AndroidListAdapterActivity.this, Dodavanje.class);
startActivity(i);
}
});
} …Run Code Online (Sandbox Code Playgroud) 我已经在网上浏览了2天并尝试了很多东西,但似乎无法弄清楚这有什么问题.
我仍然相当熟悉Android的发展,所以我可能错过了一些明显的东西.
我有一个应用程序女巫正在使用sqllite数据库存储一些数据和这个概念证明的列表在列表视图中显示.我可以在列表中添加项目,删除它们.
到现在为止还挺好.我遇到的问题是当我而不是删除更新数据库中名为"已删除"的列并将其设置为1然后让适配器更新列表.似乎没有用.
如果我使用删除语句,它的工作原理.它更新,一切都很好,但我想在数据库中删除已删除的项目,但不显示它们(所以基本上"隐藏"项目)
如果我检查数据库,更新本身会成功更改列和所有内容,所以我想这是一个刷新问题,因为适配器不会重新查询数据库或那个方向的东西
Listview Loader:
public void fillData() {
if(lw.getAdapter() == null){
// Fields from the database (projection)
// Must include the _id column for the adapter to work
String[] from = new String[] { TodoTable.COLUMN_SUMMARY, TodoTable.COLUMN_ID};
String where = TodoTable.COLUMN_DELETED + " = ?";
Cursor cursor = getContentResolver().query(TodoContentProvider.CONTENT_URI,from,where,new String[] {"0"},null);
// Fields on the UI to which we map
int[] to = new int[] { R.id.label };
adapter = new SimpleCursorAdapter(this, R.layout.todo_row, cursor, from,
to, 0); …Run Code Online (Sandbox Code Playgroud)