2016-10-25 2 views
0

모든 목록 항목을 cardview에 표시 할 수있는 방법이 있습니까? 를이 내 어댑터 코드 :listview 항목을 sqlite 데이터베이스에서 cardview로 바인딩

public class Item_adapter extends BaseAdapter { 
    Context context; 
    DBHelper mDbHelper = new DBHelper(context); 
    LayoutInflater mInflater; 
    DBHelper helper = new DBHelper(context); 
List<ItemsHolder> list ; 
    ViewHolder viewHolder; 



    public Item_adapter(Context context, List list) { 
     this.list = list; 
    } 

    @Override 
    public int getCount() { 
     return 0; 
    } 

    @Override 
    public Object getItem(int position) { 
     return null; 
    } 

    @Override 
    public long getItemId(int position) { 
     return 0; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     if (convertView == null) { 
      convertView = mInflater.inflate(R.layout.items_list,parent,false); 

     viewHolder = new ViewHolder(); 

     viewHolder.ItemName = (TextView) convertView.findViewById(R.id.Item_name); 
     viewHolder.ItemDescrip = (TextView) convertView.findViewById(R.id.Item_Description); 
     convertView.setTag(viewHolder); 
     }else{ 
      viewHolder = (ViewHolder) convertView.getTag(); 
     } 


     return convertView; 
    } 
    private static class ViewHolder { 

     TextView ItemName; 
     TextView ItemDescrip; 
    } 
} 

이 내가 메인에 전화를 어디 이것은 내가 지금까지 시도하고 내가 목록 항목을 얻을 디버깅하지만 난 cardview에 표시 할 그들을 얻을하지 못할 때 무엇을 활동 :

mydb = 새 DBHelper (this);

listlist = mydb.getAllItems(); 

// ArrayAdapter와 ArrayAdapter와 새로운 ArrayAdapter와 = (이, android.R.layout.simple_list_item_1, array_list); 어댑터 = 새 Item_adapter (getApplicationContext(), listlist);

obj = (ListView)findViewById(R.id.listView1); 
obj.setAdapter(adapter); 
obj.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
    @Override 
    public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) { 
     // TODO Auto-generated method stub 
     ItemsHolder itemsHolder = (ItemsHolder)arg0.getItemAtPosition(position); 
     int id_To_Search = itemsHolder.Id; 

     Bundle dataBundle = new Bundle(); 
     dataBundle.putInt("id", id_To_Search); 

     Intent intent = new Intent(getApplicationContext(), DsiplayItems.class); 

     intent.putExtras(dataBundle); 
     startActivity(intent); 
    } 
}); 
+0

가장 간단한 방법은'SimpleCursorAdapter'을 사용하는 것입니다을 얻을 것이다 희망, 그리고 – pskink

답변

1

CursorAdapter을 사용하십시오. DB 행을 ListView 행에 바인딩하도록 설계되었습니다.

또한 CursorLoader을 사용하여 활동 내에서 커서를로드하고 관리 할 수 ​​있습니다.

0

클래스에서 나중에 코드에서 참조 할 수 있도록 listView를 참조하고 CursorAdapter 유형 필드를 만들어야합니다. CursorAdapter 클래스는 다음과 같아야합니다.

public class CursorListAdapter extends CursorAdapter { 

    public CursorNoticeListAdapter(Context context) { 
     super(context, null, 0); 
    } 

    @Override 
    public View newView(Context context, Cursor cursor, ViewGroup parent) { 
     LayoutInflater inflater = LayoutInflater.from(context); 

     // generate your view here and use viewholder pattern 

     return view; 
    } 


    @Override 
    public void bindView(View view, Context context, Cursor cursor) { 
     // here you have viewHolder and the cursor from the database, now just bind them to views 
     ViewHolder viewHolder = (ViewHolder) view.getTag(); 

    } 

    public static class ViewHolder { 
     // your viewHolder class 
     public ViewHolder() { 
     } 
    } 
} 

데이터베이스를 쿼리하는 곳에서 LoaderManager.LoaderCallbacks<Cursor>을 구현합니다. 이것을 구현할 때 다음 메소드를 구현하고 생성자에서 로더를 초기화해야합니다.

public <Your-Class>() { 
    getLoaderManager().initLoader(LOADER_ID, null, this); 
} 


@Override 
public Loader<Cursor> onCreateLoader(int id, Bundle args) { 
    // this is where you query the database, which shoild give you back a cursor 
    // now just create the CursorLoader and return it 
    return new CursorLoader(getActivity(), URI, PROJECTION, selection, selectionArgs, sortOrder); 
} 


@Override 
public void onLoadFinished(Loader<Cursor> loader, Cursor data) { 
    cursorAdapter.swapCursor(data); 
} 


@Override 
public void onLoaderReset(Loader<Cursor> loader) { 
    cursorAdapter.swapCursor(null); 
} 

는`ArrayAdapter` 당신이 당신의 대답

관련 문제