2017-09-08 2 views
0

맞춤 목록보기가 생성되었으며 여기에 코드가 있습니다. 뷰에 onClickListener를 추가하면 토스트는 ImageView에만 적용됩니다. 다른보기 (textview)에 동일한 수신기를 추가하려고하면 내 응용 프로그램이 충돌합니다. 내 사용자 지정 목록보기 클래스 구현 ONClickListener이 도와주세요.동일한 onClickListner를 맞춤 목록보기의 모든 항목에 적용하는 동안 오류가 발생했습니다. [Android]

@Override 
    public View getView(int i, View view, ViewGroup viewGroup) { 


     view = layoutInflater.inflate(R.layout.activity_demo6_1, null); 

     ImageView img = (ImageView) view.findViewById(R.id.vImage); 

     final TextView name = (TextView) view.findViewById(R.id.vName); 
     final TextView write = (TextView) view.findViewById(R.id.vWrite); 
     final TextView date = (TextView) view.findViewById(R.id.vDate); 

     name.setText(articleName[i]); 
     write.setText(articleAuthor[i]); 
     date.setText(articleDate[i]); 

     view.setOnClickListener(this); 

     return view; 
    } 

@Override 
    public void onClick(View view) { 

    Toast.makeText(context, name1.getText() + "\n" + write1.getText() + "\n" + date1.getText() + "" ,Toast.LENGTH_LONG).show(); 

    } 

답변

1

난 당신이보기 항목에 클릭 리스너상의를 추가 할 수있는 방법이 될 안되는 OnClickListener를하려면 '보기', 추가하는 것을 볼 대신

@Override 
    public View getView(int i, View view, ViewGroup viewGroup) { 


     view = layoutInflater.inflate(R.layout.activity_demo6_1, null); 

     ImageView img = (ImageView) view.findViewById(R.id.vImage); 

     final TextView name = (TextView) view.findViewById(R.id.vName); 
     final TextView write = (TextView) view.findViewById(R.id.vWrite); 
     final TextView date = (TextView) view.findViewById(R.id.vDate); 

     name.setText(articleName[i]); 
     write.setText(articleAuthor[i]); 
     date.setText(articleDate[i]); 

     name.setOnClickListener(this); 
     write.setOnClickListener(this); 
     date.setOnClickListener(this); 

     return view; 
    } 

@Override 
    public final void onClick(final View v) { 
    switch (v.getId()) { 
     case R.id.vName: 
     nameClick(); // Create corresponding methods for each click, if its the same functionality just use the same method on all switch cases 
     break; 
     case R.id.vWrite: 
     writeClick(); 
     break; 
     case R.id.vDate: 
     dateClick(); 
     break; 
     default: 
     break; 
    } 
    } 

private void nameClick(){ 
    Toast.makeText(context, name1.getText() + "\n" + write1.getText() + "\n" + date1.getText() + "" ,Toast.LENGTH_LONG).show(); 
} 

는 희망이 도움이 시도 방금 항목 /보기를 클릭합니다

+0

도움 주셔서 감사합니다. – ap14

0

, 당신은 사용할 수 있습니다

listView.setOnItemClickListener(new OnItemClickListener() { 
    @Override 
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
    //Your code here 
    } 
}); 

당신의 MainActivity/호스트에 활동. 또는보기 내부의 각 하위보기를 클릭하려면 @andre answer를 따라야합니다.

관련 문제