2017-05-30 66 views
-3

我正在製作Android應用程序,但我被困在構建列表視圖。 我想通過使用每個列表項目上的刪除按鈕刪除每個項目。我的意思是,如果我按下特定行中的刪除按鈕,應刪除同一行上的列表項。單擊Android ListView中的每個刪除按鈕時出現的事件錯誤

但是,我在這裏有一些錯誤。當我按下視圖上的任何刪除按鈕時,只有視圖上的最後一項被刪除,而不是同一行中的項目。我不知道爲什麼每個刪除按鈕的事件操作僅連接到最後一個項目的ID。

這是我的適配器代碼。

public View getView(int i, View convertView, ViewGroup parent){ 
    if(convertView == null){ 
     convertView = LayoutInflater.from(context).inflate(R.layout.item,null); 
     viewHolder = new ViewHolder(); 
     viewHolder.nickname_textView = (TextView)convertView.findViewById(R.id.nickname); 
     viewHolder.content_textView = (TextView)convertView.findViewById(R.id.post_content); 
     viewHolder.date_textView = (TextView)convertView.findViewById(R.id.date); 
     viewHolder.company_textView = (TextView)convertView.findViewById(R.id.company); 
     viewHolder.location_textView = (TextView)convertView.findViewById(R.id.location); 
     viewHolder.profile_imageView = (ImageView)convertView.findViewById(R.id.imageView); 
     viewHolder.deleteButton = (Button)convertView.findViewById(R.id.deleteButton); 
     viewHolder.idHolder_textView = (TextView)convertView.findViewById(R.id.idView); 

     convertView.setTag(viewHolder); 
    } 
    else{ 
     viewHolder = (ViewHolder) convertView.getTag(); 
    } 

    viewHolder.nickname_textView.setText(list_itemArrayList.get(i).getNickname()); 
    viewHolder.content_textView.setText(list_itemArrayList.get(i).getContent()); 
    viewHolder.date_textView.setText(list_itemArrayList.get(i).getWrite_date().toString()); 
    viewHolder.location_textView.setText(list_itemArrayList.get(i).getLocation()); 
    viewHolder.company_textView.setText(list_itemArrayList.get(i).getCompany()); 
    viewHolder.profile_imageView.setImageResource(list_itemArrayList.get(i).getProfile_image()); 
    viewHolder.idHolder_textView.setText(""+list_itemArrayList.get(i).getId()); 
    viewHolder.idHolder_textView.setVisibility(View.INVISIBLE); 
    viewHolder.deleteButton.setId(list_itemArrayList.get(i).getId()); 

    viewHolder.deleteButton.setOnClickListener(new View.OnClickListener(){ 
     public void onClick(View v){ 
      String sID = viewHolder.idHolder_textView.getText().toString(); 
      long id = Long.parseLong(sID); 

      UserPosts deletePost = new UserPosts(context); 
      deletePost.open(); 
      deletePost.deleteItem(id); 
      deletePost.close(); 
     } 
    }); 

    return convertView; 
} 

我不知道爲什麼我的deleteButton.setOnClickListener不能正常工作。 謝謝。

這裏是我的應用程序的截圖 enter image description here

+0

後的logcat請 –

+0

而PLZ更新URS自..use recycleview而不是列表視圖 –

+0

如何使用list_itemArrayList.remove(我),而不是UserPosts裏面你點擊監聽器? – Prexx

回答

0

viewHolder.idHolder_textView.getText()將返回ListView控件的最後一個可見項的值。嘗試更換這些線路

String sID = viewHolder.idHolder_textView.getText().toString(); 
     long id = Long.parseLong(sID); 

有了這個

long id = list_itemArrayList.get(i).getId(); 
+0

我不能在setOnclickListener方法中使用索引'i'ㅠㅠ –

+0

創建一個最終變量並初始化它與我,然後使用該最終變量,而不是我喜歡這個'final int finalI = i;'。點擊按鈕之前添加此行。使用finalI而不是我喜歡這個'long id = list_itemArrayList.get(finalI).getId();' –

+0

謝謝你很好用 –

相關問題