2017-05-14 3 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 ++; 
    } 
} 
} 

では動作しません。
adapter.addItemonCreateView functionは、の仕事です。
select functionの場合、adapter.addItemはではありませんです。
(そしてエラーはありません)
データはDB内にあります。 (ログで確認しました)
なぜadapter.addItemselect functionではありませんとは何ですか?の解決策は何ですか?アダプタのaddItemは機能

+0

ダミーアイテムを入れても何も追加されませんか? – Mercato

答えて

1

onCreateView(内部

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 

作品)onCreateView()実行前に、あなたのビューがリストビューにはアイテムをレンダリングすることができ、レンダリングされているためであることを理由。

しかし、あなたの選択()方法であなたは、ListViewコントロールがレンダリングされた後にアイテムを追加しています。私はあなたのBookListShowAdapter.addItem()メソッドがどのようなものか知らないので

が、私はあなただけは notifyDataSetChangedを呼び出さないと仮定することができます()。 BookListShowAdapter.addItem()メソッドの最後にこのメソッドを呼び出すと、アダプタはデータを反映する任意のビュー(レンダリングを含む)をリフレッシュするよう指示します。

関連する問題