2016-08-02 7 views
-1

私は6シーズンのsqliteデータベースを持っていますが、リストビューはデータをロードするのに数秒かかるアンドロイドブックを作成しています。 は私がこれを行うにはonscroll Methodeのを実装sholudことを知っているが、私はそれを管理する方法がわからない 私のコードは次のとおりです。リストビュー上のsqliteデータベース

public class list_story extends ListActivity{ 
private database db; 
private String[] Name; 

private String sea; 
Context c; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    requestWindowFeature(Window.FEATURE_NO_TITLE); 
    setContentView(R.layout.list_story); 
    db = new database(this); 
    Bundle ex = getIntent().getExtras(); 
    sea = ex.getString("sea"); 
    refresh(); 
    setListAdapter(new AA()); 


} 

class AA extends ArrayAdapter<String>{ 
    public AA(){ 
    super(list_story.this,R.layout.row_list,Name); 
} 
    @Override 
    public View getView(final int position, View convertView, ViewGroup parent) { 

     LayoutInflater in = getLayoutInflater(); 
     View row = in.inflate(R.layout.row_list, parent,false); 
     txt.setText(Name[position]); 
     return (row); 

    } 

} 
private void refresh(){ 
    db.open(); 
    int s =db.Story_count("content", sea); 
    Name = new String[s]; 
    Fav=new String[s]; 
    Tasvir=new String[s]; 
    Scientific=new String[s]; 
    English=new String[s]; 

    for (int i = 0; i < s; i++) { 
     Name[i]=db.Story_display(i, sea, "content", 1); 
     Fav[i]=db.Story_display(i, sea, "content", 4); 
     Tasvir[i]=db.Story_display(i, sea, "content", 5); 
     Scientific[i]=db.Story_display(i, sea, "content", 6); 
     English[i]=db.Story_display(i, sea, "content", 7); 

    } 
    db.close(); 

} }

答えて

0

基本的にすべての時間はあなたが新しいを膨らましようあなたは文字通り新しい景色を広げます。その問題は、100以上のアイテムをリストビューに入れると、定義した100以上のビューが表示されます。それは非常に非効率的です。 ListViewのViewHolderパターンを使用するか、RecyclerViewを使用します。 RecyclerViewを使用する方がいいです。両方のWebには多くの情報があります。さらにご質問がありましたら

db = new DBAdapter(this); 
SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, 
     android.R.layout.simple_list_item_1, 
     db.getAllTitles(), 
     new String[] { "title" }, 
     new int[] { android.R.id.text1 }); 

ListView listView = (ListView) findViewById(R.id.list); 
listView.setAdapter(adapter); 

:ちょうどあなたは、単一のテキストフィールドと私はsimpleCursorAdapterを使用するためにあなたをお勧めしますデシベルを使用している場合

関連する問題