마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

SQlite 커스텀 리스트뷰에 항상 보이는 데이터를 추가하고싶어요

0 추천
public class FavoriteActivity extends Activity implements OnNavigationListener {
     
    public static ListView list;
    public static ArrayList<FavoriteFile> arSrc;
    public static FavoriteFile data;
    public static FavoriteDBHelper dbHelper;
    public static ListAdapter adapter;
    public static String newText = "";
     private ActionBar actionBar;
      
 
 
        private ArrayList<SpinnerNavItem> navSpinner;
        private TitleNavigationAdapter nadapter;
 
    public  void onCreate( final Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.favorite_main);
 
         
        list = (ListView) findViewById( R.id.file_list );
        dbHelper = new FavoriteDBHelper(this);
        arSrc = FavoriteDB.selectAllFile(dbHelper);
         
         
        arSrc=new ArrayList<FavoriteFile>();
             
 
               Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);
        ByteArrayOutputStream stream = new ByteArrayOutputStream();
        bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream);
        byte[] bitMapData = stream.toByteArray();
//      data=new FavoriteFile(0,bitMapData,"네이버","www.naver.com");
//      arSrc.add(data);
//      arSrc.add(new FavoriteFile(0,bitMapData,"sdfsdf","sdfsdf"));
//      adapter.arSrc.add(data);
//      adapter.OriginarSrc.add(0, new FavoriteFile(0,bitMapData,"sdfsdf","sdfsdf"));
         
//      adapter.areAllItemsEnabled();
         
         
//      adapter.arSrc.add(new FavoriteFile(0,bitMapData,"sdfsdf","sdfsdf"));
         
        adapter=new ListAdapter( this, R.layout.favorite_list_view_layout,arSrc, arSrc, null );
         
        arSrc.add(new FavoriteFile(0,bitMapData,"sdfsdf","sdfsdf"));
         
        list.setAdapter( adapter );
         
        list.setOnItemClickListener(new OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View v, int position, long id){
                WebViewActivity.webUrl=mData.favUrl;
                Intent myIntent = new Intent(FavoriteActivity.this,WebViewActivity.class);
                startActivity(myIntent);
            }
        });
                       SwipeDismissListViewTouchListener touchListener =
                    new SwipeDismissListViewTouchListener(list,
                            new SwipeDismissListViewTouchListener.DismissCallbacks() {
                                @Override
                                public boolean canDismiss(int position) {
                                    return true;
                                }
                                @Override
                                public void onDismiss(ListView list, int[] reverseSortedPositions) {
                                    for (int position : reverseSortedPositions) {
                                     
                                        FavoriteFile mData = adapter.arSrc.get(position);
                                        FavoriteDB.deleteFile(mData.getId(),dbHelper);
                                        adapter.arSrc.remove(position);
                                    }
                                    adapter.notifyDataSetChanged();
                                }
                            });
            list.setOnTouchListener(touchListener);
            list.setOnScrollListener(touchListener.makeScrollListener());
        }
 
 
class ListAdapter extends CursorAdapter implements Runnable {
     
    Context maincon;
    LayoutInflater Inflater;
    ArrayList<FavoriteFile> arSrc = new ArrayList<FavoriteFile>();
    ArrayList<FavoriteFile> OriginarSrc = arSrc;
    private Filter ListFilter;
    int layout;
     
     
     
    public ListAdapter(Context context, int layout,ArrayList<FavoriteFile> OriginarSrc, ArrayList<FavoriteFile> arSrc, Cursor cs) {
         
        super(context, cs, layout);
         
        this.maincon = context;
        this.Inflater = (LayoutInflater) context
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        this.arSrc = arSrc;
        this.layout = layout;
 
    }
 
    public int getCount() {
        return arSrc.size();
    }
 
    public String getItem(int position) {
        return arSrc.get(position).getFileName();
    }
 
    public long getItemId(int position) {
        return position;
    }
     
    public int getId(int position) {
        return OriginarSrc.get(position).getId();
    }
 
    public View getView(int position, View convertView, ViewGroup parent) {
         
         
         
        if (convertView == null) {
            convertView = Inflater.inflate(layout, parent, false);
        }
         
        Runnable start = new ListAdapter(maincon, position, OriginarSrc, OriginarSrc, mCursor);
         
        Thread T =new Thread(start);
        T.start();
         
        byte[] outImage = arSrc.get(position).getIcon();
        ByteArrayInputStream imageStream = new ByteArrayInputStream(outImage);
        Bitmap theImage = BitmapFactory.decodeStream(imageStream);
        ImageView img = (ImageView) convertView.findViewById(R.id.filelist_img);
        img.setImageBitmap(theImage);
 
         
        TextView textFilename = (TextView) convertView
                .findViewById(R.id.filelist_filename);
        textFilename.setText(arSrc.get(position).getFileName());
         
        TextView textFilesize = (TextView) convertView
                .findViewById(R.id.filelist_filesize);
        textFilesize.setText(arSrc.get(position).getFavUrl() );
 
         
        return convertView;
    }
 
     
    public Filter getFilter() {
        if (ListFilter == null)
            ListFilter = new ListFilter();
         
        return ListFilter;
    }
     
    private class ListFilter extends Filter {
        @Override
        protected FilterResults performFiltering(CharSequence constraint) {
            FilterResults results = new FilterResults();
            if (constraint == null || constraint.length() == 0) {
                results.values = OriginarSrc;
                results.count = OriginarSrc.size();
            }
            else {
                // We perform filtering operation
                ArrayList<FavoriteFile> nListDataList = new ArrayList<FavoriteFile>();
                 
                for (FavoriteFile p : arSrc) {
                    if (p.getFileName().toUpperCase().indexOf( constraint.toString().toUpperCase() ) >= 0 )
                        nListDataList.add(p);
                        //System.out.println(p.toString());
                     
                }
                 
                results.values = nListDataList;
                results.count = nListDataList.size();
 
            }
             
            return results;
        }
 
        @Override
        protected void publishResults(CharSequence constraint,
                FilterResults results) {
             
            // Now we have to inform the adapter about the new list filtered
            if (results.count == 0){
                notifyDataSetInvalidated();
                 
                arSrc = FavoriteDB.selectAllFile(FavoriteActivity.dbHelper);
                FavoriteActivity.list.setAdapter( FavoriteActivity.adapter );
            }
            else {
                arSrc = (ArrayList<FavoriteFile>) results.values;
                notifyDataSetChanged();
            }
             
        }
     
         
    }
 
     
      
}

위의 소스코드처럼 

데이터베이스를 이용한 커스텀 리스트뷰입니다. 그런데 데이터추가에 상관없이 항상 있어야하는 커스텀 리스트뷰를 배치해주고 싶습니다.

제 생각에는 리스트뷰에 뿌려줄 데이터들의 집합이 arSrc라는 변수라서 arSrc.add(new FavoriteFile(0,"이름","www.naver.com"));

이렇게 하면 되긴 되는데 기존에 있던 데이터는 다 지워지고 저 문장 하나만 뜹니다.

데이터에 상관없으니깐 adapter에 추가 시켜도 될꺼 같은데 adapter에는 추가하는 함수가 없더라구요

어떻게해야 추가를 안해도 항상 보이는 커스텀 리스트뷰를 만들 수 있을까요 ㅠ

 

나는안드로오 (960 포인트) 님이 2014년 9월 26일 질문

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...