2012-07-24 5 views
2

나는 listview이고 lisview의 각 항목은 linearlayout입니다. 선형 레이아웃 각각에 3 개의 텍스트 뷰가 포함되어 있습니다.목록보기의 하위 항목에 대한 onclicklistener

해당 텍스트 뷰에 대해 onclicklistener을 어떻게 설정합니까?

TextView tv=(TextView)findById(R.id.textView1); 
tv.setOnClickListener(...); 

이 나에게 nullpointerexception 발생 :

나는이 시도했다.

또한 listview에 setonitemclickedlistener를 시도했지만 텍스트 뷰가 아닌 선형 레이아웃에서만 작동합니다.

미리 감사드립니다.

+0

어댑터를 사용하고 있습니까? 그렇다면 질문을 편집하고 getView() 메소드를 게시 할 수 있습니까? 내부에는 청취자를 배치해야합니다. – FoamyGuy

+0

제공된 api SimpleAdapter.i를 사용하여 im은 모든 methods.if를 재정의하지 않았습니다. 각 textview에 리스너를 추가하기 만하면 매우 비효율적입니까? – Will

+0

그렇게하지 않는 것보다 덜 효율적입니다. 그러나 목록의 모든 행에서 3 개의 모든 클릭 이벤트를 개별적으로 클릭해야합니다 (내가 아는 유일한 선택). 또한 그것이 심각한 성능 저하를 초래할 것이라 생각하지 않습니다. 활동 코드를 게시 할 수 있습니까? TextViews에서 클릭 리스너를 설정하는 맞춤형 어댑터로 작동하도록 변경할 수 있도록 도와 드리겠습니다. – FoamyGuy

답변

1

.. 좋은 하루 되세요,이 내가 무슨 짓을 :

<TextView 
    ... 
    android:clickable="true" 
    android:onClick="myHandler" 
/> 

이것은 텍스트 뷰가 터치 할 때마다 myHandler가 호출/클릭했습니다. 이것을리스트 뷰에서 사용하기 때문에 getView()에 태그를 추가하고 myHandler()에서 태그를 사용하여 눌려진 행/필드를 파악해야합니다.

희망이 도움이됩니다.

0

이 요구 사항을 얻으려면 사용자 지정 어댑터 클래스를 사용해야하므로 매우 쉽게 얻을 수 있습니다. 맞춤 어댑터를 사용하면 매우 easy and simple 프로세스입니다.

클릭하면 해당 link, 그 간단한 응용 프로그램 및 Buttons 대신 TextView 사용할 수 있습니다. 이 정적으로 필요하며보기가 XML을 기반으로하는 경우

0
당신이 여기 또한 이 같은 기본 Adpter를 만들 수 있습니다 목록을 전달하고 텍스트 뷰에 위치에 따라 그 목록을 설정하고 여기에 당신이 onClick 이벤트를 설정할 수 있습니다 사용 BaseAdpter처럼 손님의 adpter을 만들어 가야

전 (1)

public class GridAdpter extends BaseAdapter 
{ 

List<String> checkednamelist; 

public GridAdpter(Context c, List<String> myitem) { 

this.checkednamelist =myitem 
} 

@Override 
    public View getView(final int position, View convertView, ViewGroup parent) { 
     // TODO Auto-generated method stub 

      //Here change with yur row xml file name and 3 textview control id name 
    View grid; 
    if (convertView == null) { 
     grid = layoutInflater.inflate(R.layout.row_grid, null); 
    } else { 
     grid = convertView; 
    } 

    TextView textView2 = (TextView) grid.findViewById(R.id.txtlable2);  
    textView.setText(checkednamelist.get(position); 
    textView2.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      // do here as per your require 

     } 
    }); 

}

@Override 
public int getCount() { 
    // TODO Auto-generated method stub 
    return myitem.size(); 
} 

@Override 
public Object getItem(int position) { 
    // TODO Auto-generated method stub 
    return myitem.get(position); 
} 

@Override 
public long getItemId(int position) { 
    // TODO Auto-generated method stub 
    return position; 
} 

public List<String> mycheckeditem() { 
    return checkednamelist; 
} 

}

// 마지막으로 설정 t 귀하의 목록보기와 함께 자신의 adpter

관련 문제