2016-08-02 7 views
-1

Я создаю книгу для Android, которая имеет 6 сезонов в базе данных sqlite, но для просмотра данных требуется несколько секунд. Я знаю, что я sholud реализовать OnScroll METHODE, чтобы сделать это, но я не знаю, как управлять мой код:sqlite database on listview

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

В основном каждый раз, когда вы пытаетесь раздуть новый view, вы буквально раздуваете новый вид. Проблема в том, что если у вас есть 100 плюсовых элементов, которые будут помещены в представление списка, то это будет более 100 просмотров, которые вы определили. Это крайне неэффективно. Используйте шаблон ViewHolder для ListView или используйте RecyclerView. Еще лучше использовать RecyclerView. В Интернете есть много информации для обоих. Просто посмотрите вверх «как использовать ViewHolder в списке»

0

Если вы используете только одно текстовое поле и дб я бы порекомендовал вам использовать simpleCursorAdapter:

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

Если у вас есть дополнительные вопросы этот отличный пример https://thinkandroid.wordpress.com/2010/01/09/simplecursoradapters-and-listviews/

+0

Я использую custome listview, и у меня есть запись +200 в моей базе данных. Я удалил необязательные коды. – mohsen1993