2016-07-25 181 views
2

我有一個listView與電影。當用戶點擊電影時,我希望導演的名字出現在烤麪包上。Android的ListView,點擊獲取列表中的項目的名稱

Toast正在工作。我只是不知道如何得到這個名字。

@Override 
    public View getView(int position, View convertView, ViewGroup parent) { 

     ViewHolder holder = null; 

     if(convertView == null){ 
      holder = new ViewHolder(); 
      convertView = inflater.inflate(resource, null); 
      holder.ivMovieIcon = (ImageView)convertView.findViewById(R.id.ivIcon); 
      holder.tvMovie = (TextView)convertView.findViewById(R.id.tvMovie); 
      holder.tvTagline = (TextView)convertView.findViewById(R.id.tvTagline); 
      holder.tvYear = (TextView)convertView.findViewById(R.id.tvYear); 
      holder.tvDuration = (TextView)convertView.findViewById(R.id.tvDuration); 
      holder.tvDirector = (TextView)convertView.findViewById(R.id.tvDirector); 
      holder.rbMovieRating = (RatingBar)convertView.findViewById(R.id.rbMovie); 
      holder.tvCast = (TextView)convertView.findViewById(R.id.tvCast); 
      holder.tvStory = (TextView)convertView.findViewById(R.id.tvStory); 
      convertView.setTag(holder); 
     } else { 
      holder = (ViewHolder) convertView.getTag(); 
     } 

     convertView.setOnClickListener(new View.OnClickListener() { 
      public void onClick(final View v) { 
       Toast.makeText(MainActivity.this, "Name of Director", 
         Toast.LENGTH_LONG).show(); 
      } 
     }); 


     final ProgressBar progressBar = (ProgressBar) convertView.findViewById(R.id.progressBar); 

     ImageLoader.getInstance().displayImage(movieModelList.get(position).getImage(), holder.ivMovieIcon, new ImageLoadingListener() { 
      @Override 
      public void onLoadingStarted(String imageUri, View view) { 
       progressBar.setVisibility(View.VISIBLE); 
      } 

      @Override 
      public void onLoadingFailed(String imageUri, View view, FailReason failReason) { 
       progressBar.setVisibility(View.GONE); 
      } 

      @Override 
      public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) { 
       progressBar.setVisibility(View.GONE); 
      } 

      @Override 
      public void onLoadingCancelled(String imageUri, View view) { 
       progressBar.setVisibility(View.GONE); 
      } 
     }); 

     holder.tvMovie.setText(movieModelList.get(position).getMovie()); 
     holder.tvTagline.setText(movieModelList.get(position).getTagline()); 
     holder.tvYear.setText("Year: " + movieModelList.get(position).getYear()); 
     holder.tvDuration.setText("Duration: " + movieModelList.get(position).getDuration()); 
     holder.tvDirector.setText("Director: " + movieModelList.get(position).getDirector()); 

     // rating bar 
     holder.rbMovieRating.setRating(movieModelList.get(position).getRating()/2); 

     StringBuffer stringBuffer = new StringBuffer(); 
     for(MovieModel.Cast cast : movieModelList.get(position).getCastList()){ 
      stringBuffer.append(cast.getName() + ", "); 
     } 

     holder.tvCast.setText("Cast:" + stringBuffer); 
     holder.tvStory.setText(movieModelList.get(position).getStory()); 
     return convertView; 
    } 

    class ViewHolder{ 
     private ImageView ivMovieIcon; 
     private TextView tvMovie; 
     private TextView tvTagline; 
     private TextView tvYear; 
     private TextView tvDuration; 
     private TextView tvDirector; 
     private RatingBar rbMovieRating; 
     private TextView tvCast; 
     private TextView tvStory; 
    } 

在此先感謝

+0

爲什麼不使用'OnItemClickListener'? –

+1

只是調用'movieModelList.get(position).getDirector()' –

+0

我對android開發還不熟悉。沒想到使用OnItemClickListener – Kong

回答

2

它是非常簡單.....

convertView.setOnClickListener(new View.OnClickListener() { 
      public void onClick(final View v) { 
       Toast.makeText(MainActivity.this, movieModelList.get(position).getDirector(), 
         Toast.LENGTH_LONG).show(); 
      } 
     }); 
+0

嗨,我把它改爲你的榜樣。我還必須更改 public view getView(final int position,View convertView,ViewGroup parent)以避免錯誤。將int位置更改爲final。這是一個好主意或壞主意。 – Kong

+0

@Kong這個邏輯是完美的 –

+0

@Kong沒有錯在做最後的變量位置 –

0

您可以檢查您的Toast Now

convertView.setOnClickListener(new View.OnClickListener() { 
     public void onClick(final View v) { 
    Toast.makeText(Context, "Name of Director"+movieModelList.getMethod(), 
        Toast.LENGTH_LONG).show(); 
     } 
    }); 

編輯

listViewObj.setOnItemClickListener(new OnItemClickListener() { 
      public void onItemClick(AdapterView<?> parent, View view, 
        int position, long id) { 
       // Toast 
       Toast.makeText(getApplicationContext(), 
       ((TextView) view).getText(), Toast.LENGTH_SHORT).show(); 
      } 
     }); 

希望這有助於你。

相關問題