2016-08-02 11 views
-1

Ich erstelle ein Android-Buch, das 6 Saison Whithin SQLite Datenbank hat, aber Listview dauert einige Sekunden, um Daten zu laden. Ich weiß, dass ich onscroll Methode, dies zu tun sholud zu implementieren, aber ich weiß nicht, wie es verwalten mein Code:sqlite Datenbank auf Listenansicht

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(); 

} }

Antwort

0

Grundsätzlich ist jedes Mal, wenn Sie versuchen, eine neue aufzublasen Sehen Sie, Sie werden buchstäblich eine neue Sicht aufblasen. Das Problem damit ist, wenn Sie mehr als 100 Elemente in die Listenansicht einfügen müssen, also mehr als 100 Ansichten, die Sie definiert haben. Das ist extrem ineffizient. Verwenden Sie das ViewHolder-Muster für ListView oder verwenden Sie das RecyclerView. Besser noch den RecyclerView verwenden. Es gibt viele Informationen im Internet für beide. Schauen Sie einfach nach oben „wie ViewHolder in einer Listenansicht verwenden“

0

Wenn Sie nur ein einziges Textfeld verwenden und ein db ich würde empfehlen Sie eine simpleCursorAdapter zu verwenden:

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); 

Wenn Sie weitere Fragen haben, Überprüfen Sie dieses großartige Beispiel https://thinkandroid.wordpress.com/2010/01/09/simplecursoradapters-and-listviews/

+0

Ich benutze custome listview und ich habe +200 Datensatz in meiner Datenbank.Ich löschte unwesentliche Codes. – mohsen1993