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

레이아웃이 여러 개인 ListView안의 텍스트값은 어떻게 가져오나요?

0 추천

최근 통화 기록을 리스트로 쭉 나타내면,

리스트뷰를 클릭하게 되면 전화가 걸리게 하는

아주 간단한 작업을 하다가 벽에 부딪혔습니다. ㅠㅠ

 

리스트뷰를 안드로이드에서 기본으로 제공하는

simple_list_item_2 레이아웃을 사용했습니다.

그 레이아웃의 text1에 다가 전화번호를 나타나게 했구요

text2에 날짜를 나타나게 했습니다.

 

그런데, 리스트뷰를 클릭했을 때 text1에 있는 전화번호를 뽑아올 방법을 찾지를 못했습니다.

onItemClickListener를 사용해서 findViewById를 사용해서, 뽑아오려고 하니깐

버전 문제인지 이번에는 getText함수가 뜨질 않네요.

getText대신, .getTextAlignment() 라는지.. .getTextDirection()라든지...

구글링해도 나오질 않는 메소드가 나오네요 ㅠㅠ;


 

소스가 에디터에 안 붙여져서

 

@TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
public class SampleActivity extends Activity{

 ListView mListView;
 private static String[] mProjections = new String[] {
  Data._ID, CallLog.Calls.DATE, CallLog.Calls.NUMBER };
 
 public void onCreate(Bundle savedInstanceState){
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);
  
  Cursor cursor = getContentResolver().query(
    CallLog.Calls.CONTENT_URI, mProjections, null,
    null, CallLog.Calls.DATE + " DESC");
  
  startManagingCursor(cursor);
  
  mListView = (ListView) findViewById(R.id.listView1);
  ListAdapter adapter = new SimpleCursorAdapter(this,
    android.R.layout.simple_list_item_2, cursor, new String[]{
    CallLog.Calls.NUMBER, CallLog.Calls.DATE},
    new int[]{
    android.R.id.text1, android.R.id.text2});
  
  mListView.setAdapter(adapter);
  
  
  
  mListView.setOnItemClickListener(new OnItemClickListener(){

   @Override
   public void onItemClick(AdapterView<?> parent, View clickedView, int pos,
     long id) {
    // TODO Auto-generated method stub
    
  
    // Toast.makeText(getBaseContext(),clickedView.findViewById(android.R.id.text1).getTextDirection(),Toast.LENGTH_LONG).show(); --getText메소드가 안떠요


    //Toast.makeText(context(), clickedView.findViewById(android.R.id.text1).toString(), Toast.LENGTH_LONG).show(); 이렇게 시도해도 안 되네요


    String num = "tel:"+clickedView.findViewById(android.R.id.text1).toString();
   Intent in = new Intent(Intent.ACTION_DIAL,Uri.parse(num));
    startActivity(in);
   }
   
  }
  );
 

 

 

 

 

1)  이 클릭된 리스트뷰의 이 전화번호를 어떻게 추출할 수 있을까요?

2) getText가 왜 안 나오는 걸까요?

.getTextAlignment() 라는지.. .getTextDirection()는 어떤 메소드인가요?

3) 그리고 text2에는 통화 날짜를 삽입했는데, 날짜가 아니라 이상한 숫자가 뜨네요. 어떻게 하면 날짜로 고칠 수 있을까요...?

 

3)번은 안 되더라도 1)번만이라도..

 

고수님들의 많은 도움 부탁드립니다. (꾸벅)

kasike (150 포인트) 님이 2013년 5월 26일 질문

1개의 답변

0 추천
 
채택된 답변

((TextView)clickedView.findViewById(android.R.id.text1)).getText().toString()

 

이렇게 해주시면 됩니다. 뷰클래스에서는 getText메소드가 당연히 없습니다. 

congbab (5,140 포인트) 님이 2013년 5월 26일 답변
kasike님이 2013년 5월 26일 채택됨
그렇게 했었는데요.
Multiple markers at this line
    - TextView cannot be resolved to
     a type
    - TextView cannot be resolved to
     a type
라면서 오류가 뜨던데요;;
아.. 해결됐습니다!!
이번 프로젝트에 전혀 textView를 안 쓰다가 쓰니깐, 임폴트가 안 되어 있었더군요!! 감사합니다.^^
...