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

디비를 가져와서 에딧텍스트 검색 리스트뷰를 만드는게 목적입니다. [closed]

0 추천

한 달 정도 혼자 이것저것하다가 도저히 안되겠어서 질문 올립니다. 많이 도와주세요 ㅠㅠ

 

 

요렇게 만들어서

다른 화면에서 요기까진 했어요. 그런데 제가 원하는 부분까진 아니에요. 우선 이렇게 하면 검색은 됩니다. 근데 전화와 문자 버튼은 먹통이에요.

소스 첨부하겠습니다.

private void liststudent() {
		sCursor = dbAdapter.selectStudents();
		ArrayList<Student> sList = new ArrayList<Student>();
		if (sCursor != null) {
			Student student = null;
			if (sCursor.moveToFirst()) {
				do {
					student = new Student();
					int index = sCursor.getColumnIndex("student_year");
					student.setStudent_year(sCursor.getString(index));

					index = sCursor.getColumnIndex("student_clas");
					student.setStudent_clas(sCursor.getString(index));

					index = sCursor.getColumnIndex("student_name");
					student.setStudent_name(sCursor.getString(index));

					index = sCursor.getColumnIndex("student_number");
					student.setStudent_number(sCursor.getString(index));

					index = sCursor.getColumnIndex("student_no");
					student.setStudent_no(sCursor.getInt(index));

					sList.add(student);
				} while (sCursor.moveToNext());
				sCursor.close();
			}
		}
		sa = new StudentsAdapter(this, sList);
		student_listView.setAdapter(sa);
		student_listView.setOnItemClickListener(this);

	}

 

요게 처음 사진 소스입니다. 

 

그리고 두번째 소스는

StudentSearch.java

public class StudentSearch extends Activity {
	DbAdapter dbAdapter;
	ListView searchListview;
	Button btnsearchstudent;
	EditText searchstudent;
	ArrayAdapter<String> adapter;
	List<String> labels;

	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.studentsearch);
		
		DbAdapter db = new DbAdapter(getApplicationContext());
		List<String> n = db.getAllStudent();
		searchListview = (ListView) findViewById(R.id.searchListview);
		searchstudent = (EditText) findViewById(R.id.searchstudent);
		// Adding items to listview
		adapter = new ArrayAdapter<String>(this, R.layout.searchline,
				R.id.search_student_name, n);
		searchListview.setAdapter(adapter);

		/**
		 * Enabling Search Filter
		 * */
		searchstudent.addTextChangedListener(new TextWatcher() {

			@Override
			public void onTextChanged(CharSequence cs, int arg1, int arg2,
					int arg3) {
				// When user changed the Text
				StudentSearch.this.adapter.getFilter().filter(cs);
			}

			@Override
			public void beforeTextChanged(CharSequence arg0, int arg1,
					int arg2, int arg3) {
				// TODO Auto-generated method stub

			}

			@Override
			public void afterTextChanged(Editable arg0) {
				// TODO Auto-generated method stub
			}
		});
	}
	
	
	

	@Override
	protected void onResume() {
		// TODO Auto-generated method stub
		super.onResume();
		dbAdapter = new DbAdapter(this);
		
	}
}

이것인데.....

 

제가 원하는것은 이 상태에서 전화와 문자 버튼이 눌렸으면 좋겠습니다.

물론 제가 엄청 부족하다는 생각이듭니다. 이렇게만 한건 아니구요.... 이방법 말고 다른 방법도 해봣습니다. 밑에 그림을 봐주세요.

 

이것은 edittext에 아무글자나 써도 바로 에러가 납니다. 대신에 전화와 문자는 제대로 되죠.... 여기서 바로 검색만 되도 좋겠습니다.

소스는

public class StudentSearch extends Activity {
	DbAdapter dbAdapter;
	Cursor sCursor;
	ListView searchListview;
	StudentsAdapter sa;
	Button btnsearchstudent;
	EditText searchstudent;

	ArrayAdapter<String> adapter;

	SQLiteDatabase db;

	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.studentsearch);
		searchListview = (ListView) findViewById(R.id.searchListview);
		searchstudent = (EditText) findViewById(R.id.searchstudent);
	}

	@Override
	protected void onResume() {
		// TODO Auto-generated method stub
		super.onResume();
		dbAdapter = new DbAdapter(this);
		liststudent();
	}

	private void liststudent() {
		sCursor = dbAdapter.selectStudents();
		ArrayList<Student> sList = new ArrayList<Student>();
		if (sCursor != null) {
			Student student = null;
			if (sCursor.moveToFirst()) {
				do {
					student = new Student();
					int

					index = sCursor.getColumnIndex("student_name");
					student.setStudent_name(sCursor.getString(index));

					index = sCursor.getColumnIndex("student_number");
					student.setStudent_number(sCursor.getString(index));

					index = sCursor.getColumnIndex("student_no");
					student.setStudent_no(sCursor.getInt(index));

					sList.add(student);
				} while (sCursor.moveToNext());
				sCursor.close();
			}
		}
		sa = new StudentsAdapter(this, sList);
		searchListview.setAdapter(sa); 
		searchListview.setTextFilterEnabled(true);
		searchstudent.addTextChangedListener(new TextWatcher(){
			public void onTextChanged(CharSequence s, int start, int before, int count){
				}
			public void beforeTextChanged(CharSequence s, int start, int count, int after){
				}
			public void afterTextChanged(Editable s){
				ListView searchListview = (ListView) findViewById(R.id.searchListview);
				((Filterable)sa).getFilter().filter(s.toString());
			}
		});

	}

}

이렇게됩니다.

 

저 직장이있는데... 이것때문에 맨날 늦게 자고 밤새고 약 한달동안 이랬습니다. 

ㅠㅠ...그만큼 간절해요....

이것저것 다 찾아보고 책도 찾아보고 새로나온책 사보고 해도 제 맘에 들게 속시원하게 나온곳이 없었어요...

예제도 찾아보고 해도 없어요...ㅠㅠ

제가 공부를 헛했거나 해서 못알아볼수도있는거 압니다.

쓴소리 달게 받겠습니다. 해결책좀 주세요. 

요약하자면

디비에 저장된 사람들 정보를 가져와서 뿌려주고 검색되고 그 상태에서 전화와 문자버튼이 작동하는걸 원합니다..

긴글 읽어주셔서 감사합니다. 도움을 주셔요 ㅠㅠ

 

행복하세요. 

 

질문을 종료한 이유: 해결
소다소 (290 포인트) 님이 2014년 11월 10일 질문
소다소님이 2016년 3월 7일 closed

1개의 답변

0 추천
무슨 DB 쓰시나요???

010 0100 전화 앞번호가 DB에 있는 내용 가져온것인가요??
남디 (480 포인트) 님이 2014년 11월 10일 답변
Sqlite써용....네 다 디비에서 가져왔습니다
...