2016-03-22 15 views
0

私は非常に初心者のAndroid開発者であり、SQLiteデータベースからエントリを読み取り、それらをListViewにマップし、 'List All'ボタンが表示されたときにCUSTOMER_NAMEフィールドを表示するをクリックします。私はさまざまなチュートリアルに従ってきましたが、範囲の問題に取り組んでいます。カーソルアダプタとフラグメント付きSQLiteソリューション

編集::カーソルからリストビューへのマッピングを終了するにはどうすればよいですか?

ご提供いただけるご支援は大変ありがとうございます。私fragment_list.xmlは、(リストビューを参照)のように見えます

public Cursor getAllCustomers(){ 
    List<Customer> customers=new LinkedList<Customer>(); 

    String query="SELECT * FROM "+TABLE_NAME; 

    SQLiteDatabase db=this.getWritableDatabase(); 
    Cursor cursor= db.rawQuery(query, null); 

    return cursor; 
} 

<LinearLayout 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_alignParentTop="true" 
    android:layout_centerHorizontal="true"> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     android:text="List Customers" 
     android:id="@+id/textView3" 
     android:layout_gravity="center_horizontal" /> 

    <ListView 
     android:layout_width="wrap_content" 
     android:layout_height="381dp" 
     android:layout_centerHorizontal="true" 
     android:layout_alignParentTop="true" 
     android:id="@+id/listView" 
     android:layout_above="@+id/btnAdd" /> 

    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="List All" 
     android:id="@+id/btnGetAll" 
     android:layout_alignParentBottom="true" 
     android:layout_toRightOf="@+id/btnAdd" /> 

</LinearLayout> 

そして最後に、私のCustomersFragment.java

public class CustomersFragment extends Fragment { 

public CustomersFragment() { 

} 

public static CustomersFragment newInstance() { 
    CustomersFragment fragment = new CustomersFragment(); 
    Bundle args = new Bundle(); 
    fragment.setArguments(args); 
    return fragment; 
} 

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

@Override 
public void onActivityCreated(Bundle savedInstanceState) { 
    super.onActivityCreated(savedInstanceState); 

    Button bGetAll = (Button) getActivity().findViewById(R.id.btnGetAll); 
    bGetAll.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      CustomerrDBSetup db = new CustomerrDBSetup(getActivity()); 
      Cursor cursor = db.getAllCustomers(); 
      String[] from = new String[] { "customer_name" }; 

     } 
    }); 
    } 
} 
これまでのように私のDBHelper、getAllCustomer方法が見え

+0

のすべてのデータを取得し、あなたの質問は何ですか? –

+0

申し訳ありません、ただ更新しました – Bryce

答えて

0

関数は次のようになります

このように
public List<Customer> getAllCustomers(){ 
    List<Customer> customers = new LinkedList<Customer>(); 
    String query="SELECT * FROM " + TABLE_NAME; 
    SQLiteDatabase db=this.getWritableDatabase(); 
    Cursor cursor= db.rawQuery(query, null); 

    if (cursor.moveToFirst()) { 
      do { 
       Customer customer = customerFromCursor(cursor); 
       customers.add(cutomer); 
      } while (cursor.moveToNext()); 
     } 

    //don't forget to close cursor after use it 

    if (cursor != null) { 
      cursor.close(); 
     } 

    return customers; 
} 


public Customer customerFromCursor(Cursor cursor){ 
    Customer ret = new Customer(); 

    //put your getter here 

    //ex: 
    ret.setName(cursor.getString(cursor.getColumnIndex(yourColumName))); 

    //..... 
    return ret; 
    } 

あなたは、リストビュー

+0

ありがとうございます。 ArrayAdapter経由でデータをバインドするにはどうすればいいですか? – Bryce

+0

ここをクリック(http://theopentutorials.com/tutorials/android/listview/android-custom-listview-with-image-and-text-using-arrayadapter/)あなたはこれを行うには良いチュートリアルを見つけることができます – khyper

関連する問題