Не удаляется правильный индекс Элемент из ListView - PullRequest
0 голосов
/ 28 августа 2018

Я создаю новый ListView, который будет получать значения из пользовательского ввода. Это работает нормально, но у меня проблема с удалением элемента.

Я установил OnItemLongClickListener для этого ListView, чтобы я мог получить правильный индекс для удаления элемента из списка. Но это удаляет неправильный элемент индекса. Это означает, что если я долго нажимаю на первый элемент, то хочу удалить этот элемент, но каждый раз, когда он удаляет последний элемент из Listview (тост показывает правильный индекс).

Пожалуйста, смотрите исходный код для получения дополнительной информации. Смотрите фотографии и исходный код.

package com.example.powerbase.myapplication;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

import java.util.ArrayList;

public class MainActivity extends AppCompatActivity {

EditText editText;
Button button;
ListView listView;
TextView hTxt,pTxt;
BaseAdapter baseAdapter;
ArrayList<Item> inputValues;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


    inputValues=new ArrayList<Item>();
    editText=(EditText)findViewById(R.id.et);
    button=(Button)findViewById(R.id.btn);
    listView=(ListView)findViewById(R.id.lv);
    hTxt=(TextView)findViewById(R.id.hTxt);
    pTxt=(TextView)findViewById(R.id.pTxt);


    baseAdapter=new BaseAdapter() {
        @Override
        public int getCount() {
            return inputValues.size();
        }

        @Override
        public Object getItem(int i) {
            return inputValues.get(i);
        }

        @Override
        public long getItemId(int i) {
            return 0;
        }

        @Override
        public View getView(int i, View view, ViewGroup viewGroup) {
            if (view==null){
                LayoutInflater inflater= (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
                view=inflater.inflate(R.layout.custom_view,null);


                TextView headerText=(TextView)view.findViewById(R.id.hTxt);
                TextView pragraphText=(TextView)view.findViewById(R.id.pTxt);


                headerText.setText(inputValues.get(i).getHeader());
                pragraphText.setText(inputValues.get(i).getPragraph());

            }
            return view;
        }
    };
    listView.setAdapter(baseAdapter);


    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            String s=editText.getText().toString();
            Item item=new Item(s,s);
            inputValues.add(item);
            editText.setText("");
            baseAdapter.notifyDataSetChanged();
            Toast.makeText(MainActivity.this, "New Item Added", Toast.LENGTH_SHORT).show();


        }
    });
listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> adapterView, View view, int i, long l) {
    inputValues.remove(i);
    baseAdapter.notifyDataSetChanged();
    Toast.makeText(MainActivity.this, String.valueOf(i), Toast.LENGTH_SHORT).show();
    return false;
    }
  });
  }}

Исходный код файла Item.java ниже:

package com.example.powerbase.myapplication;

public class Item {
String header;
String pragraph;

public Item(String header, String pragraph){
    super();
    this.header=header;
    this.pragraph=pragraph;

}

public String getHeader() {
    return header;
}

public void setHeader(String header) {
    this.header = header;
}

public String getPragraph() {
    return pragraph;
}

public void setPragraph(String pragraph) {
    this.pragraph = pragraph;
}
}
...