我想制作一个动态列表视图,在我第一次登录时获取用户凭据,并在下次启动应用时将其显示在列表中。我知道如何将用户名从一个意图发送到另一个意图。我还没有专注于SQLite部分,稍后会这样做。我在创建动态列表视图时遇到问题。 找到了一个非常有用的帖子 - Dynamically add elements to a listView Android
他在屏幕上使用了一个按钮并调用方法onClick来填充列表。我可以不用按钮吗?一旦我能够登录,我希望它自动发生。 我如何在代码中使用这些语句?
listItems.add(value);
adapter.notifyDataSetChanged();
这里的值是我从其他意图获得的用户名。
请帮忙。谢谢!
答案 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