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 ++; 
    } 
} 
} 

Ich möchte, dass machen, wenn wenn die Schaltfläche Aktualisieren klicken dann Artikel Ansicht zu Liste hinzufügen.
Die adapter.addItem in onCreateView function ist Arbeit.
Aber in select function, adapter.addItem ist nicht arbeiten.
(Und es gibt keinen Fehler.)
Die Daten befinden sich in der DB. (Ich habe es mit dem Protokoll)
Warum adapter.addItem in select function ist nicht arbeiten und was ist die Lösung ?Adapter addItem wird funktionieren nicht in Funktion

+0

wird nichts hinzugefügt, wenn Sie einen Dummy-Artikel einfügen? – Mercato

Antwort

1

Der Grund, dass

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 

Arbeiten innerhalb onCreateView() ist, weil onCreateView() läuft vor Ihrer Ansicht gerendert wird, das Listview ermöglicht die Elemente zu machen.

jedoch in Ihrem select() Methode Sie hinzufügen, die Elemente nach der Listview gemacht wurde.

Weil ich weiß nicht, was wie Ihre BookListShowAdapter.addItem() Methode sieht, kann ich nur davon ausgehen, dass Sie nicht notifyDataSetChanged (nenn). Wenn Sie diese Methode am Ende der Methode BookListShowAdapter.addItem() aufrufen, teilt Ihr Adapter jeder Ansicht mit, die Ihre Daten widerspiegelt, um sich selbst zu aktualisieren (einschließlich Rendering).