2017-07-27 54 views
0

我的问题ListView的问题?

我试图让一个应用程序,你可以添加一个项目使用一个EditText和一个ListView列表。我使用this website来帮助,因为我没有太多的android编码经验,但我不得不改变一下代码,因为我使用了两个活动而不是一个。它有效,但有一些问题我不知道如何解决。

  1. 你只能添加一个列表项,然后你放的最后一个消失,并被新的替换。
  2. 如果你离开的ListView活动,新列表项消失了(我想这就是为什么排名第一的事情)
  3. 我有,所以当你点击的项目之一,它关系到一个活动(每个去到不同的活动),并且您只能在将项目添加到列表中后单击它们。

我的代码

Questions.java(ListView的活动)

package com.example.sylvie.dogwise; 

import android.content.Intent; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import java.util.ArrayList; 
import java.util.Arrays; 
import java.util.List; 
import android.widget.ArrayAdapter; 
import android.widget.ListView; 
import android.content.Intent; 
import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.ArrayAdapter; 
import android.widget.ListView; 
import android.view.View; 

public class Questions extends AppCompatActivity { 
    ListView listview; 
    String[] ListElements = new String[]{ 
      "How much food should I feed my dog?", 
      "How do I teach my dog to sit?" 
    }; 

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

     listview = (ListView) findViewById(R.id.QuestionsList); 

     final List<String> ListElementsArrayList = new ArrayList<String>(Arrays.asList(ListElements)); 
     final ArrayAdapter<String> adapter = new ArrayAdapter<String> 
       (Questions.this, android.R.layout.simple_list_item_1, ListElementsArrayList); 
     listview.setAdapter(adapter); 
     adapter.notifyDataSetChanged(); 

     Bundle newQuestion = getIntent().getExtras(); 
     if (newQuestion == null) { 
      return; 
     } 
     String QuestionName = newQuestion.getString("QuestionName"); 

     ListElementsArrayList.add(QuestionName); 
     adapter.notifyDataSetChanged(); 

     listview.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      public void onItemClick(AdapterView<?> parent, View view, 
            int position, long id) { 
       if (position == 0) { 
        Intent myIntent = new Intent(view.getContext(), Question_howmuchfoodshouldifeedmydog.class); 
        startActivityForResult(myIntent, 0); 
       } 

       if (position == 1) { 
        Intent myIntent = new Intent(view.getContext(), Question_2.class); 
        startActivityForResult(myIntent, 0); 
       } 
      } 
     }); 
    } 

    ; 

    public void backHomeOnClick(View view) { 
     Intent b = new Intent(this, HomeScreen.class); 
     startActivity(b); 
    } 

    public void askAQuestionOnClick(View view) { 
     Intent i = new Intent(this, AskAQuestion.class); 
     startActivity(i); 
    } 

    ; 
} 

回答

0

这里要插入一个项目到列表:

String QuestionName = newQuestion.getString("QuestionName"); 
ListElementsArrayList.add(QuestionName); 

如果你想一次添加多个项目,您可以改为传递一个列表。

如果你想保留它,你必须存储数据。检查领域或dbflow的教程。选择一个最适合你的用例。

+0

谢谢。你知道为什么我不能点击一个项目,直到我添加一个项目吗? – Sylvie

+0

调试应用程序并检查onItemClick方法以查看它保存的位置值。这应该告诉你你做错了什么。 – Nenco