我正在使用ArrayList< HashMap< String,String>>使用SimpleAdapter和自定义2行布局.
码:
Cursor cursor = sDictionary.query("FTSgesla",new String[] {PodatkovnaBaza.KEY_WORD,PodatkovnaBaza.KEY_DEFinitioN},null,PodatkovnaBaza.KEY_WORD); if (cursor == null) { // There are no results mTextVIEw.setText("Empty"); } else { HashMap<String,String> item; if(cursor.movetoFirst()) { do { item = new HashMap<String,String>(); item.put("line1",cursor.getString(0)); item.put("line2",cursor.getString(1)); List.add(item); } while(cursor.movetoNext()); } sa = new SimpleAdapter(GlavniActivity.this,List,R.layout.result,new String[] { "line1","line2" },new int[] {R.ID.word,R.ID.deFinition}); mListVIEw.setAdapter(sa); // define the on-click Listener for the List items mListVIEw.setonItemClickListener(new OnItemClickListener() { @OverrIDe public voID onItemClick(AdapterVIEw<?> parent,VIEw vIEw,int position,long ID) { //do something } }); }解决方法 没有更快的方法来加载100000个项目,并且您的用户也不需要同时查看所有项目,因此,使用线程逐个加载它们.
private class sqlTask extends AsyncTask<Integer,String[],Integer> { @OverrIDe protected Integer doInBackground(Integer... params) { db.open(); Cursor c = db.getAllDataCursor(); for (c.movetoFirst(); !c.isAfterLast(); c.movetoNext()) { String[] temp = new String[c.getColumnCount()]; for (int i = 0; i < temp.length; i++) { temp[i] = c.getString(i); } publishProgress(thisTask,temp); } c.close(); db.close(); } @OverrIDe protected voID onProgressUpdate(String[]... values) { super.onProgressUpdate(values); // LOAD ONE ROW }}总结
以上是内存溢出为你收集整理的android – 从SQLite数据库中显示ListView中的100000个项目全部内容,希望文章能够帮你解决android – 从SQLite数据库中显示ListView中的100000个项目所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)