Itens duplicados em ArrayList Android Estúdio

Ash Zudus:

Estou recebendo a variável de uma atividade diferente

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        // check that it is the SecondActivity with an OK result
        if (requestCode == 0) {
            if (resultCode == RESULT_OK) { // Activity.RESULT_OK

                // get String data from Intent
                String returnString = data.getStringExtra("keyName");
                // Add data to ArrayList
                Subreddit_Array_List.add(1,returnString);
            }
        }
    }

Resultado esperado:

Item introduzido pelo usuário

Resultado: Duplica o último item adicionado na ArrayList


public class MainActivity extends AppCompatActivity {

    public final String FILENAME = "example.txt";
    ArrayList<String> Subreddit_Array_List = new ArrayList<String>();
    Context context = this;



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        final ListView lv = (ListView) findViewById(R.id.LV_Main);


        Subreddit_Array_List.add(0,"Saved Posts");
        //Ensures Add new is always at the end
        Subreddit_Array_List.add(Subreddit_Array_List.size(), "Add New +");

        final ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(
                this,
                android.R.layout.activity_list_item,android.R.id.text1,
                Subreddit_Array_List );
                lv.setAdapter(arrayAdapter);
                lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {






    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        // check that it is the SecondActivity with an OK result
        if (requestCode == 0) {
            if (resultCode == RESULT_OK) { // Activity.RESULT_OK

                // get String data from Intent
                String returnString = data.getStringExtra("keyName");
                // Add data to ArrayList
                Subreddit_Array_List.add(1,returnString);
            }
        }
    }



    }

desde já, obrigado

Edit: Subreddit_Array_List.add(Subreddit_Array_List.size() - 1, "Add New +");não funciona Além disso, eu preciso adicionar novo para estar sempre na parte inferior e mensagens guardadas no topo

É estranho como se eu remover o Subreddit_Array_List.add(1,returnString);Então ele funciona, mas adiciona o returnstring para o fundo do ArrayList, no entanto eu preciso do Add New sempre na parte inferior

Ffrthysn:

O comportamento que você está procurando já existe no ListView- é chamado de "cabeçalho" e um "rodapé". Você também pode apenas definir um em xml para tornar sua vida mais fácil:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    final ListView lv = (ListView) findViewById(R.id.LV_Main);

    lv.addHeaderView(createTextView("Saved Posts"));
    lv.addFooterView(createTextView("Add New +"));

    //Etc. etc.
}
private TextView createTextView(String content) {
    TextView tv = new TextView(this);
    tv.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));
    tv.setText(content);
    return tv;
}

Agora você não precisa se preocupar sobre como inserir os primeiros e últimos elementos a si mesmo - basta adicionar o conteúdo à sua lista e atualizar o seu adaptador com ele.

Edit: Se você deseja que o cabeçalho e rodapé de ter o mesmo estilo como o resto da sua lista elementos:

private View createHeaderOrFooter(String content) {
    final LayoutInflater inflater = LayoutInflater.from(this);
    final View row = inflater.inflate(android.R.layout.activity_list_item, null);
    ((TextView)row.findViewById(android.R.id.text1)).setText(content);
    return row;
}

Acho que você gosta

Origin http://10.200.1.11:23101/article/api/json?id=397034&siteId=1
Recomendado
Clasificación