在列表视图中动态添加项目

时间:2011-08-04 08:40:16

标签: android listview dynamic

我想制作一个动态列表视图,在我第一次登录时获取用户凭据,并在下次启动应用时将其显示在列表中。我知道如何将用户名从一个意图发送到另一个意图。我还没有专注于SQLite部分,稍后会这样做。我在创建动态列表视图时遇到问题。 找到了一个非常有用的帖子 - Dynamically add elements to a listView Android

他在屏幕上使用了一个按钮并调用方法onClick来填充列表。我可以不用按钮吗?一旦我能够登录,我希望它自动发生。 我如何在代码中使用这些语句?

listItems.add(value);
adapter.notifyDataSetChanged();

这里的值是我从其他意图获得的用户名。
请帮忙。谢谢!

3 个答案:

答案 0 :(得分:3)

为此,请使用下面给出的示例: 对于实例,您正在将一些字符串添加到列表中

所以创建一个像这样的ListArray

ArrayList<String> listItems = new ArrayList<String>();

现在,只要你想在列表中添加某些字符串就可以做这件事

  EditText editText = (EditText) findViewById(R.id.edit);
  listItems.add("my string");  OR
  listItems.add(editText.getText.toString()); //incase if you are getting string value from editText and adding it into the list

在main.xml

中的线性布局中使用此Xml
  <EditText android:id="@+id/edit"
     android:layout_width="fill_parent"
    android:layout_height="wrap_content"/>

现在,当您动态添加一个项目时,请调用此

  adapter.notifyDataSetChanged();

以上内容将更新您的列表并显示更新的列表。

有关此内容的详细信息,请参阅以下链接:

http://www.androidpeople.com/android-custom-listview-tutorial-part-1
http://www.androidpeople.com/android-custom-listview-tutorial-part-2
http://www.androidpeople.com/android-custom-dynamic-listview-%E2%80%93part3

在这些教程中,你可以将String []替换为在答案顶部给出的ArrayList,当你想添加任何项目时,只需使用第二个代码片段。

感谢

答案 1 :(得分:1)

执行此操作的最佳方法是使用ArrayAdapter。修改适配器时,它会自动刷新,因此您无需调用notifyDataSetChanged

答案 2 :(得分:0)

您可以尝试使用此代码将元素动态添加到列表视图中。 你也可以点击按钮点击它。

import java.util.ArrayList;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.Toast;

public class MainActivity extends Activity {
    //step2 : create all the variables.
    EditText et;
    Button b;
    ListView lv;
    ArrayList<string> al;
    ArrayAdapter<string> aa;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //step3 : intitalize all the variables.
        et = (EditText) findViewById(R.id.editText1);
        b = (Button) findViewById(R.id.button1);
        lv = (ListView) findViewById(R.id.listView1);
        al = new ArrayList<string>();//initialize array list
        aa = new ArrayAdapter<string>(this, 
                android.R.layout.simple_list_item_1, 
                al);//step4 : establish communication bw arraylist and adapter
        //step5 : establish communication bw adapter and dest (listview)
        lv.setAdapter(aa);
        lv.setOnItemClickListener(new OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView parent, 
                    View v, int arg2,
                    long arg3) {
                String item = al.get(arg2);
                Toast.makeText(getApplicationContext(), item, 0).show();
            }
        });
        //step6 : button click logic
        b.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                //step i: take text from et and add to arraylist
                String item = et.getText().toString();
                al.add(0, item);
                //step ii: notify to adapter
                aa.notifyDataSetChanged();
                //step iii: clr edit text
                et.setText("");
            }
        });
    }
}

完整代码检查this list view example