2014-03-06 2 views
0

다음과 같은 문제가 발생했습니다. onListItemClick is not working for listview?ListView onClick이 작동하지 않습니다.

그러나 답은 저에게 맞지 않습니다. 여기 내 코드는 다음과 같습니다

MyAdapter :

 static class ViewHolder { 
     protected TextView textName; 
     protected TextView textDate; 
     protected TextView textTime; 
     protected TextView textCity; 
     protected TextView textStreet; 
     protected TextView textMusic; 
     protected TextView numVotes; 
     protected ImageButton BtMap; 
     protected RatingBar rbFavorite; 
     protected RatingBar rating; 
     protected ImageView imgMusic; 
     protected ImageView imgPic; 
    } 

    @Override 
    public View getView(final int position, View convertView, ViewGroup parent) { 
     View view = null; 
     if(rowResourceId!=R.layout.search_empty_list) { 
      if (convertView == null) { 
       LayoutInflater inflator = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
       view = inflator.inflate(rowResourceId, null); 
       final ViewHolder viewHolder = new ViewHolder(); 

       viewHolder.textName = (TextView) view.findViewById(R.id.textView1); 
       viewHolder.numVotes = (TextView) view.findViewById(R.id.textView2); 
       viewHolder.rbFavorite = (RatingBar) view.findViewById(R.id.FavoriteBar); 
       viewHolder.rating = (RatingBar) view.findViewById(R.id.rateBar); 
       viewHolder.textDate = (TextView) view.findViewById(R.id.textDatum); 
       viewHolder.textTime = (TextView) view.findViewById(R.id.textTime); 
       viewHolder.textCity = (TextView) view.findViewById(R.id.textCity); 
       viewHolder.textStreet = (TextView) view.findViewById(R.id.textStreet); 
       viewHolder.textMusic = (TextView) view.findViewById(R.id.textMusic); 

       viewHolder.imgMusic = (ImageView) view.findViewById(R.id.imageMusic); 
       viewHolder.imgPic = (ImageView) view.findViewById(R.id.imgPic);   

       viewHolder.rbFavorite.setOnRatingBarChangeListener(new RatingBar.OnRatingBarChangeListener() { 
         @Override 
         public void onRatingChanged(RatingBar ratingBar, float nr, boolean fromUser) { 
         club element = (club) viewHolder.rbFavorite.getTag(); 
         if(nr>0) { 
          element.setFavorite(1); 
         } else { 
          element.setFavorite(0); 
         } 
         } 
       }); 
       viewHolder.rbFavorite.setOnTouchListener(new OnTouchListener() { 
        @Override 
        public boolean onTouch(View v, MotionEvent event) { 
         if (event.getAction() == MotionEvent.ACTION_UP) { 
          float rating = viewHolder.rbFavorite.getRating(); 
          Bundle bundle = new Bundle(); 
          if(rating>0) { 
           viewHolder.rbFavorite.setRating(0); 
           bundle.putString("action", "removeFavorite"); 
          } else { 
           viewHolder.rbFavorite.setRating(1); 
           bundle.putString("action", "addFavorite"); 
          } 

          String user_id="1"; 
          String login="1"; 
          if(Slider.user!=null){ 
           user_id = Slider.user.getId(); 
           login = "0"; 
          } 

          bundle.putString("param1", user_id); 
          bundle.putString("param2", list.get(position).getClub_id()+""); 
          bundle.putString("param3", login); 
          bundle.putString("param4", ""); 
          bundle.putString("param5", ""); 

          if(user_id!=null && !user_id.equalsIgnoreCase("") && !user_id.equalsIgnoreCase("0")) { 
           httposts task = new httposts(); 
           task.execute(bundle); 
          } 
         } 
         return true; 
        } 
       }); 

       view.setTag(viewHolder); 
       viewHolder.rbFavorite.setTag(list.get(position)); 

      } else { 
       view = convertView; 
       ((ViewHolder) view.getTag()).rbFavorite.setTag(list.get(position)); 
      } 
      ViewHolder holder = (ViewHolder) view.getTag(); 
      functions func = new functions(); 

      String open = func.getClubOpening(list.get(position)); 
      if(open.equalsIgnoreCase("close")) { 
       open = "Geschlossen"; 
      } 

      holder.textName.setText(list.get(position).getName()); 
      holder.textDate.setText("Heute"); 
      holder.textTime.setText(open); 
      holder.textCity.setText(list.get(position).getCity()); 
      holder.textStreet.setText(list.get(position).getStreet()); 
      holder.textMusic.setText(list.get(position).getMusic()); 
      holder.numVotes.setText(list.get(position).getNumVotes()+" Bewertungen"); 
      holder.rating.setEnabled(false); 
      try { 
       holder.rating.setRating(list.get(position).getRatingStars()); 
      } catch (Exception e) { 
      } 

      if(list.get(position).isFavorite()) { 
       holder.rbFavorite.setRating(1); 
      } else { 
       holder.rbFavorite.setRating(0); 
      } 

      if (list.get(position).getImage() != null) { 
       holder.imgPic.setImageBitmap(list.get(position).getImage()); 
      } else { 
       holder.imgPic.setImageResource(R.drawable.pic1); 
      } 

     } else { 
      LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      view = inflater.inflate(rowResourceId, parent, false); 

      TextView textView1 = (TextView) view.findViewById(R.id.textView1); 
      textView1.setText(list.get(0).getName()); 
     } 
     return view; 

    } 

그리고 이것은 내 row.xml입니다 :

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:background="@drawable/shadow" > 

<View 
    android:id="@+id/View05" 
    android:layout_width="fill_parent" 
    android:layout_height="match_parent" 
    android:layout_alignBottom="@+id/textView1" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentTop="true" 
    android:background="@drawable/actionbar" /> 

<TextView 
    android:id="@+id/textView1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentTop="true" 
    android:layout_centerHorizontal="true" 
    android:text="Large Text" 
    android:textAppearance="?android:attr/textAppearanceLarge" 
    android:textColor="@color/actionbar_text_color" /> 

<View 
    android:id="@+id/View01" 
    android:layout_width="fill_parent" 
    android:layout_height="1dp" 
    android:layout_alignRight="@+id/imgPic" 
    android:layout_below="@+id/textDatum" 
    android:layout_marginRight="10dp" 
    android:layout_marginTop="5dp" 
    android:background="@color/club_listrow_linecolor" /> 

<ImageView 
    android:id="@+id/imgPic" 
    android:layout_width="fill_parent" 
    android:layout_height="130dp" 
    android:layout_alignParentLeft="true" 
    android:layout_below="@+id/textCity" 
    android:layout_marginLeft="5dp" 
    android:layout_marginRight="10dp" 
    android:layout_marginTop="7dp" 
    android:src="@drawable/pic1" /> 

<TextView 
    android:id="@+id/textCity" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignLeft="@+id/textStreet" 
    android:layout_alignTop="@+id/View01" 
    android:layout_marginTop="5dp" 
    android:text="TextView" /> 

<TextView 
    android:id="@+id/textStreet" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_above="@+id/View01" 
    android:layout_alignLeft="@+id/textDatum" 
    android:layout_marginLeft="100dp" 
    android:layout_toRightOf="@+id/textDatum" 
    android:text="TextView" 
    android:textColor="@color/club_listrow_textcolor" /> 

<RatingBar 
    android:id="@+id/rateBar" 
    android:layout_width="wrap_content" 
    android:layout_height="20dp" 
    android:layout_alignLeft="@+id/imgPic" 
    android:layout_below="@+id/imgPic" 
    android:layout_marginTop="40dp" 
    android:progressDrawable="@drawable/small_ratebar" /> 

<TextView 
    android:id="@+id/textDatum" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignLeft="@+id/imgPic" 
    android:layout_below="@+id/View05" 
    android:layout_marginTop="7dp" 
    android:text="TextView" 
    android:textColor="@color/club_listrow_textcolor" /> 

<TextView 
    android:id="@+id/textTime" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_above="@+id/imgPic" 
    android:layout_alignLeft="@+id/imgPic" 
    android:layout_marginTop="7dp" 
    android:text="TextView" 
    android:textColor="@color/club_listrow_textcolor" /> 

<RatingBar 
    android:id="@+id/FavoriteBar" 
    android:layout_width="wrap_content" 
    android:layout_height="21dp" 
    android:layout_alignLeft="@+id/textDatum" 
    android:layout_alignParentTop="true" 
    android:background="@drawable/actionbar" 
    android:numStars="1" 
    android:progressDrawable="@drawable/small_ratebar" 
    android:stepSize="1" /> 

<ImageView 
    android:id="@+id/BtMap" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignBottom="@+id/View05" 
    android:layout_alignParentTop="true" 
    android:layout_alignRight="@+id/imgPic" 
    android:src="@drawable/map_marker_32" /> 

<ImageView 
    android:id="@+id/imageView1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignLeft="@+id/imgPic" 
    android:layout_below="@+id/imgPic" 
    android:layout_marginTop="10dp" 
    android:src="@drawable/note_32" /> 

<TextView 
    android:id="@+id/textMusic" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignBottom="@+id/imageView1" 
    android:layout_marginLeft="5dp" 
    android:layout_toLeftOf="@+id/button1" 
    android:layout_toRightOf="@+id/imageView1" 
    android:text="TextView" /> 

<Button 
    android:id="@+id/button1" 
    android:layout_width="90dp" 
    android:layout_height="30dp" 
    android:layout_alignRight="@+id/View01" 
    android:layout_below="@id/imgPic" 
    android:layout_marginTop="6dp" 
    android:background="@drawable/button" 
    android:text="@string/events" 
    android:textColor="@color/button_text" 
    android:textStyle="bold" 
    android:typeface="serif" /> 

<TextView 
    android:id="@+id/textView2" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignBottom="@+id/rateBar" 
    android:layout_toRightOf="@+id/rateBar" 
    android:layout_marginLeft="2dp" 
    android:text="TextView" 
    android:textSize="10dp" 
    android:textColor="@color/club_voteNum" /> 

이 사람이 나를 도울 수 있을까요?

+0

같은 convertView 을 설정 한 후 onListItemClick

SET convertView.OnClickListner를 구현하는 것보다()? –

답변

1

어디 onListItemClick 오히려

@Override 
public View getView(final int position, View convertView, ViewGroup parent) { 
    View view = null; 
    if(rowResourceId!=R.layout.search_empty_list) { 
     if (convertView == null) { 
      LayoutInflater inflator = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      view = inflator.inflate(rowResourceId, null); 
      final ViewHolder viewHolder = new ViewHolder(); 

      viewHolder.textName = (TextView) view.findViewById(R.id.textView1); 
      viewHolder.numVotes = (TextView) view.findViewById(R.id.textView2); 
      viewHolder.rbFavorite = (RatingBar) view.findViewById(R.id.FavoriteBar); 
      viewHolder.rating = (RatingBar) view.findViewById(R.id.rateBar); 
      viewHolder.textDate = (TextView) view.findViewById(R.id.textDatum); 
      viewHolder.textTime = (TextView) view.findViewById(R.id.textTime); 
      viewHolder.textCity = (TextView) view.findViewById(R.id.textCity); 
      viewHolder.textStreet = (TextView) view.findViewById(R.id.textStreet); 
      viewHolder.textMusic = (TextView) view.findViewById(R.id.textMusic); 

      viewHolder.imgMusic = (ImageView) view.findViewById(R.id.imageMusic); 
      viewHolder.imgPic = (ImageView) view.findViewById(R.id.imgPic);   

      viewHolder.rbFavorite.setOnRatingBarChangeListener(new RatingBar.OnRatingBarChangeListener() { 
        @Override 
        public void onRatingChanged(RatingBar ratingBar, float nr, boolean fromUser) { 
        club element = (club) viewHolder.rbFavorite.getTag(); 
        if(nr>0) { 
         element.setFavorite(1); 
        } else { 
         element.setFavorite(0); 
        } 
        } 
      }); 
      viewHolder.rbFavorite.setOnTouchListener(new OnTouchListener() { 
       @Override 
       public boolean onTouch(View v, MotionEvent event) { 
        if (event.getAction() == MotionEvent.ACTION_UP) { 
         float rating = viewHolder.rbFavorite.getRating(); 
         Bundle bundle = new Bundle(); 
         if(rating>0) { 
          viewHolder.rbFavorite.setRating(0); 
          bundle.putString("action", "removeFavorite"); 
         } else { 
          viewHolder.rbFavorite.setRating(1); 
          bundle.putString("action", "addFavorite"); 
         } 

         String user_id="1"; 
         String login="1"; 
         if(Slider.user!=null){ 
          user_id = Slider.user.getId(); 
          login = "0"; 
         } 

         bundle.putString("param1", user_id); 
         bundle.putString("param2", list.get(position).getClub_id()+""); 
         bundle.putString("param3", login); 
         bundle.putString("param4", ""); 
         bundle.putString("param5", ""); 

         if(user_id!=null && !user_id.equalsIgnoreCase("") && !user_id.equalsIgnoreCase("0")) { 
          httposts task = new httposts(); 
          task.execute(bundle); 
         } 
        } 
        return true; 
       } 
      }); 

      view.setTag(viewHolder); 
      viewHolder.rbFavorite.setTag(list.get(position)); 

     } else { 
      view = convertView; 
      ((ViewHolder) view.getTag()).rbFavorite.setTag(list.get(position)); 
     } 
     ViewHolder holder = (ViewHolder) view.getTag(); 
     functions func = new functions(); 

     String open = func.getClubOpening(list.get(position)); 
     if(open.equalsIgnoreCase("close")) { 
      open = "Geschlossen"; 
     } 

     holder.textName.setText(list.get(position).getName()); 
     holder.textDate.setText("Heute"); 
     holder.textTime.setText(open); 
     holder.textCity.setText(list.get(position).getCity()); 
     holder.textStreet.setText(list.get(position).getStreet()); 
     holder.textMusic.setText(list.get(position).getMusic()); 
     holder.numVotes.setText(list.get(position).getNumVotes()+" Bewertungen"); 
     holder.rating.setEnabled(false); 
     try { 
      holder.rating.setRating(list.get(position).getRatingStars()); 
     } catch (Exception e) { 
     } 

     if(list.get(position).isFavorite()) { 
      holder.rbFavorite.setRating(1); 
     } else { 
      holder.rbFavorite.setRating(0); 
     } 

     if (list.get(position).getImage() != null) { 
      holder.imgPic.setImageBitmap(list.get(position).getImage()); 
     } else { 
      holder.imgPic.setImageResource(R.drawable.pic1); 
     } 

    } else { 
     LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     view = inflater.inflate(rowResourceId, parent, false); 

     TextView textView1 = (TextView) view.findViewById(R.id.textView1); 
     textView1.setText(list.get(0).getName()); 
    } 

// DO it here 
// ***************************************************************************************** 
// view.OnClickListener 
//***************************************************************************************** 
     return view; 

    } 
+0

감사! 그게 효과가있어! 그런데 왜 내가 이렇게해야합니까? 사용자 지정 어댑터와 함께 또 다른 listView를 시도했는데 일반적인 onItemClickListener가 작동합니다. – user3384194

+0

@ user3384194 목록에 클릭 가능한 항목이 있기 때문에 – Trikaldarshi

관련 문제