2017-08-03 10 views
-1

削除アイコンをクリックするとビューを削除しますが、削除アイコンをクリックすると最後のビューのみが削除されます。Androidのビューは、forループを使用してinflateします

for (int i = 0; i < response.body().getData().getQualifications().size(); i++) { 
     View item = qualificationInflater.inflate(R.layout.student_education_view, null); 
     qualificationParentPanel.addView(item); 
     TextView college = (TextView) item.findViewById(R.id.college); 
     TextView degree = (TextView) item.findViewById(R.id.degree); 
     TextView percentage = (TextView) item.findViewById(R.id.percentage); 
     TextView start_date = (TextView) item.findViewById(R.id.start_date); 
     TextView end_date = (TextView) item.findViewById(R.id.end_date); 
     ImageView educationDeleteIcon = (ImageView) item.findViewById(R.id.educationDeleteIcon); 
     college.setText(response.body().getData().getQualifications().get(i).getCollege()); 
     degree.setText(response.body().getData().getQualifications().get(i).getDegree()); 
     percentage.setText(response.body().getData().getQualifications().get(i).getPercentage()); 
     start_date.setText(response.body().getData().getQualifications().get(i).getSessionFrom()); 
     end_date.setText(response.body().getData().getQualifications().get(i).getSessionTo()); 

     final int finalI = i; 
     educationDeleteIcon.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Log.d("deleteIconPos","------>" +response.body().getData().getQualifications().get(finalI).getId()); 
       qualificationParentPanel.removeViewAt(finalI); 
      } 
     }); 
+0

トーストのi' 'の値をeducationDeleteIcon

ImageView educationDeleteIcon = (ImageView) item.findViewById(R.id.educationDeleteIcon); 

のための唯一のローカルな宣言を使用して –

+0

が表示されるはずです

qualificationParentPanel.removeView(item); 

を使用することができます大丈夫ですが、ビューの位置を取得する方法は?あなたの 'for'ループのために –

+0

を開きます。あなたはどこを閉じていますか? – snachmsm

答えて

1

はその後

qualificationParentPanel.removeViewAt((int)v.getTag()); 
0

final View item = ... 
たての膨張ビューを確定考える setTag

educationDeleteIcon.setTag(i); 

を使用して、すべてのImageViewiを取り付け

その後、OnClickListenerの内側に、あなたはまた、あなたが代わりに

educationDeleteIcon = (ImageView) item.findViewById(R.id.educationDeleteIcon); 
関連する問題