마스터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일 질문

답변 달기

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