2012-07-25 3 views
0

안녕하십니까. 나는 초보자입니다. 내 목표는 ListView에서 특정 항목을 클릭하고 싶을 때 프로그래밍 한 새로운 활동을 열어야한다는 것입니다. 예를 들어 : "John"을 클릭하면 X라는 메리 클래스가 열리므로 Y, Charlie, Z 클래스 등의 클래스를 열어야합니다. 나는 코드 끝에 "onListItemClick"코드를 사용해 보았지만 작동하지 않습니다. ListView 앱에서 John의 이름을 클릭해도 아무런 변화가 없습니다. 제 코드가 잘못되어 어디에 코드를 넣어야하는지, 올바른 코드가 무엇인지 알려주세요.ListView : 새 활동을 열어야합니다.

P.S : 당신의 활동 ListActivity를 확장하면 onListItemClick 방법은 오버라이드 (override)하는

public class Searchsort extends Activity { 

    private ListView lv1; 
    private EditText ed; 
    private String lv_arr[]={"John","Mary","Carl","Rose","Charlie","Allan", "João"}; 
    private ArrayList<String> arr_sort= new ArrayList<String>(); 
    int textlength=0; 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle icicle) { 
     super.onCreate(icicle); 
     setContentView(R.layout.main); 
     lv1 = (ListView)findViewById(R.id.ListView01); 
     ed = (EditText)findViewById(R.id.EditText01); 

     // By using setAdpater method in listview we an add string array in list. 

     lv1.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1 , lv_arr)); 
     ed.addTextChangedListener(new TextWatcher() { 

      public void afterTextChanged(Editable s) { 

      } 

      public void beforeTextChanged(CharSequence s, int start, int count, int after) { 

      } 

      public void onTextChanged(CharSequence s, int start, int before, int count) { 
       textlength=ed.getText().length(); 
       arr_sort.clear(); 
       for(int i=0;i<lv_arr.length;i++) { 
        if(textlength<=lv_arr[i].length()) { 
         if(ed.getText().toString().equalsIgnoreCase((String) lv_arr[i].subSequence(0, textlength))) { 
          arr_sort.add(lv_arr[i]); 
         } 
        } 
       } 

       lv1.setAdapter(new ArrayAdapter<String> (Searchsort.this,android.R.layout.simple_list_item_1 , arr_sort)); 

      } 
     }); 
    } 

    public void onListItemClick(ListView parent, View v, int position, long id) { 
     if ("John".equals(lv_arr[position])) { 
      Intent myIntent = new Intent(Searchsort.this, X.class); 
      startActivity(myIntent); 

     if ("Mary".equals(lv_arr[position])) { 
      Intent myIntent = new Intent(Searchsort.this, Y.class); 
      startActivity(myIntent); 

     if ("Charlie".equals(lv_arr[position])) { 
      Intent myIntent = new Intent(Searchsort.this, W.class); 
      startActivity(myIntent); 


     } 
    } 

} 

답변

1

유일한 방법 :이 내가 사용 내 코드입니다 매니페스트 파일

에 모든 활동을 선언했다. 그것을하지 않기 때문에, 당신은 참고로 청취자를 클릭 항목의 사용자 설정 내에서 적절한 방법으로 onListItemClick 방법에

lv1.setOnItemClickListener(new onItemClickListener(){ 

    @Override 
    protected void onListItemClick(AdapterView<?> arg0, View view, int position, long id){ 
     // Your code 
    } 
}); 

를 코드를 이동해야합니다, 이것은 비슷한 질문이 스택에 여러 번 요청합니다.

0
listView1.setOnItemClickListener(new OnItemClickListener() { 
    public void onItemClick(AdapterView<?> arg0, View arg1, int position,long arg3) { 
     Toast.makeText(cxt, "You select Item " + (position + 1), Toast.LENGTH_SHORT).show();  
    } 
}); 
0

이 코드를보십시오 ..

listView.setOnItemClickListener(new OnItemClickListener() { 
    @Override 
    public void onItemClick(AdapterView<?> paramAdapterView, View paramView, int paramInt, 
      long paramLong) { 
     switch(position) 
{ 
    case 0: Intent newActivity0 = new Intent(YourActivity.this, second.class);  
      startActivity(newActivity0); 
      break; 
    case 1: Intent newActivity1 = new Intent(YourActivity.this, third.class);  
      startActivity(newActivity1); 
      break; 
    case 2: Intent newActivity2 = new Intent(YourActivity.this, fourth.class);  
      startActivity(newActivity2); 
      break; 
    case 3: Intent newActivity3 = new Intent(YourActivity.this, fifth.class);  
      startActivity(newActivity3); 
      break; 
    case 4: Intent newActivity4 = new Intent(YourActivity.this, sixth.class);  
      startActivity(newActivity4); 
      break; 
}    
    } 
}); 

시험 후 알려 ...하면이 당신 :-)

희망이 도움
관련 문제