2017-05-14 1 views
0
public class TabBooklist extends Fragment { 

/* <DB> */ 
//variable use in DB-> 
int nCount=1; 
SQLiteDatabase db; 
BookListDBHelper helper; 
ListView listview ; 
BookListShowAdapter adapter; 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    View rootView = inflater.inflate(R.layout.tab_booklist, container, false); 


    /* (XML) <Book list> */ 

    adapter = new BookListShowAdapter(getContext()) ; 

    listview = (ListView) rootView.findViewById (R.id.lv_book_list); 
    listview.setAdapter(adapter); 

    adapter.addItem(ContextCompat.getDrawable(getActivity(), R.drawable.ic_empty), 
      "name1", "author1", 110, 1200) ; //work 
    adapter.addItem(ContextCompat.getDrawable(getActivity(), R.drawable.ic_empty), 
      "name21", "author21", 210, 1003) ; //work 
    adapter.addItem(ContextCompat.getDrawable(getActivity(), R.drawable.ic_empty), 
      "name31", "author31", 101, 1020) ; //work 


    //refresh 
    Button btn_ref = (Button) rootView.findViewById(R.id.btn_refresh); 
    btn_ref.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { //click to add 
      select(); 
     } 
    }); 

    return rootView; 
} 


//select 
public void select() { 
    nCount = 1; 

    db = helper.getReadableDatabase(); 
    Cursor c = db.query("booklist", null, null, null, null, null, null); 

    while (c.moveToNext()) { 
     int int_idBook = c.getInt(c.getColumnIndex("id_book")); 
     int int_idTree = c.getInt(c.getColumnIndex("id_tree")); 
     String str_title = c.getString(c.getColumnIndex("title")); 
     String str_author = c.getString(c.getColumnIndex("author")); 
     String str_imageLink = c.getString(c.getColumnIndex("image_link")); 
     int n_pageTotal = c.getInt(c.getColumnIndex("page_total")); 

     //add 
     adapter.addItem(ContextCompat.getDrawable(getActivity(), R.drawable.ic_empty), 
       str_title, str_author, 0, n_pageTotal); //not work 

     adapter.addItem(ContextCompat.getDrawable(getActivity(), R.drawable.ic_empty), 
       "name31", "author31", 101, 1020) ; //not work 

     nCount ++; 
    } 
} 
} 

Je veux faire que lorsque si cliquez sur le bouton Actualiser puis ajouter l'article àde liste.
Le adapter.addItem dans onCreateView function est travail.
Mais dans select function, adapter.addItem est ne fonctionne pas.
(Et il n'y a pas d'erreur.)
Les données sont dans le DB. (Je l'ai vérifié avec le journal)
Pourquoi adapter.addItem dans select function est fonctionne pas et quelle est la solution ?addItem adaptateur est pas un travail dans la fonction

+0

Est-ce que rien ne sera ajouté si vous mettez un objet factice? – Mercato

Répondre

1

La raison pour laquelle

adapter.addItem(ContextCompat.getDrawable(getActivity(), R.drawable.ic_empty), 
     "name1", "author1", 110, 1200) ; //work 
adapter.addItem(ContextCompat.getDrawable(getActivity(), R.drawable.ic_empty), 
     "name21", "author21", 210, 1003) ; //work 
adapter.addItem(ContextCompat.getDrawable(getActivity(), R.drawable.ic_empty), 
     "name31", "author31", 101, 1020) ; //work 

travaux à l'intérieur onCreateView() est parce que onCreateView() fonctionne avant votre vue est rendue, ce qui permet ListView de rendre les articles.

Cependant, dans votre select() méthode vous ajoutez les articles après ListView a été rendue.

Parce que je ne sais pas ce que votre méthode BookListShowAdapter.addItem() ressemble, je ne peux que supposer que vous n'appelez pas notifyDataSetChanged(). Si vous appelez cette méthode à la fin de la méthode BookListShowAdapter.addItem(), votre adaptateur indiquera à toute vue reflétant vos données de se rafraîchir (ce qui inclut le rendu).