如何刷新安卓列表适配器,因此它显示新添加的项目 [英] How to Refresh Android List Adapter, so it shows new-added items
问题描述
我工作的一个项目。它只是示出的任务的列表,并添加新的任务,给它。我有3个班。一个用于添加,一个视图,一个容纳所有的信息(我这样认为)。
我有2个任务,我已经列出,并且他们正常显示。
现在的问题是,当我的添加新任务也不会考虑给他们。我已经尝试了许多可能的解决方案:
-
简单地增加项目列出
-
创建一个新的列表,它包含从旧的和重建适配器项目;
-
使用
notifyDataSetChanged();
旁边有加()命令; -
等等。
下面是我的code,这是一个有点乱,但我希望你看着办吧。
AndroidListAdapterActivity类:
公共类AndroidListAdapterActivity扩展ListActivity {
/ **第一次创建活动时调用。 * /
按钮B1;
利斯塔O;
ArrayAdapter AA;
@覆盖
公共无效的onCreate(包savedInstanceState){
super.onCreate(savedInstanceState);
的setContentView(R.layout.main);
B1 =(按钮)findViewById(R.id.add);
Log.w(POC,PA OVO SE ZOVE SVAKI PUT);
O =新利斯塔();
o.lis.add(S1);
o.lis.add(S2);
AA =新的ArrayAdapter<字符串>(这一点,android.R.layout.simple_spinner_item,o.lis);
setListAdapter(AA);
b1.setOnClickListener(新View.OnClickListener(){
@覆盖
公共无效的onClick(视图v){
意图I =新的意图(AndroidListAdapterActivity.this,Dodavanje.class);
startActivity(ⅰ);
}
});
}
@覆盖
公共无效onResume(){
super.onResume();
aa.notifyDataSetChanged();
如果(o.broj> = 2){
AA =新的ArrayAdapter<字符串>(这一点,android.R.layout.simple_spinner_item,o.lis2);
setListAdapter(AA);
Log.w(对myApp,调用过于);
}
字符串YT =将String.valueOf(o.ses);
Log.w(捷拉斯,YT);
aa.notifyDataSetChanged();
Log.w(对myApp,叫!!!!!!!!!!!!!);
字符串FX =将String.valueOf(o.broj);
Log.w(myAPPe,FX);
}
@覆盖
保护无效的onPause(){
// TODO自动生成方法存根
super.onPause();
}
}
Dodavanje(添加):
公共类Dodavanje延伸活动{
按钮,但;
按钮but2;
的EditText等;
利斯塔O;
AndroidListAdapterActivity WWW;
@覆盖
保护无效的onCreate(包savedInstanceState){
// TODO自动生成方法存根
super.onCreate(savedInstanceState);
的setContentView(R.layout.dodavanje);
但是=(按钮)findViewById(R.id.bb);
but2 =(按钮)findViewById(R.id.bc);
等=(EditText上)findViewById(R.id.tt);
WWW =新AndroidListAdapterActivity();
O =新利斯塔();
but.setOnClickListener(新View.OnClickListener(){
@燮pressWarnings(未登记)
@覆盖
公共无效的onClick(查看为arg0){
。字符串T1 = et.getText()的toString();
//o.lis.add(t1);
o.lis2.addAll(o.lis);
o.lis2.add(T1);
o.lis.add(T1);
o.ses = TRUE;
Log.w(IZVJESTAJ:,将String.valueOf(o.ses));
o.broj ++;
字符串FX =将String.valueOf(o.broj);
Log.w(Izbacaj,FX);
et.setText();
}
});
but2.setOnClickListener(新View.OnClickListener(){
@覆盖
公共无效的onClick(查看为arg0){
完();
}
});
}
}
利斯塔(名单):
公共类利斯塔扩展应用{
ArrayList的<字符串> LIS =新的ArrayList<字符串>();
ArrayList的<字符串> lis2 =新的ArrayList<字符串>();
INT broj = 1;
布尔SES = FALSE;
}
您可以使用notifyDataSetChanged()方法来更新您的listview.In的情况下,你可以使用。
aa.notifyDataSetChanged();
请试试这个方法......
公共类MainActivity延伸活动{
ListView控件LVIEW;
按钮btnAdd;
私人的ListView mainListView;
私人ArrayAdapter<字符串> listAdapter;
@覆盖
公共无效的onCreate(包savedInstanceState){
super.onCreate(savedInstanceState);
的setContentView(R.layout.activity_main);
mainListView =(ListView控件)findViewById(R.id.listView1);
btnAdd =(按钮)findViewById(R.id.button1);
//创建并填充字母名称的列表。
的String []字母=新的String [] {A,B,C,D,
的E,F,G,H};
ArrayList的<字符串> alphabetsList =新的ArrayList<字符串>();
alphabetsList.addAll(Arrays.asList(字母));
//创建ArrayAdapter使用的列表。
listAdapter =新的ArrayAdapter<字符串>(这一点,android.R.layout.simple_list_item_1,alphabetsList);
//设置一个ArrayAdapter为ListView的适配器。
mainListView.setAdapter(listAdapter);
btnAdd.setOnClickListener(新OnClickListener(){
@覆盖
公共无效的onClick(查看为arg0){
// TODO自动生成方法存根
//这里我添加按钮的监听器增加更多的字母在列表中。
listAdapter.add(I);
listAdapter.add(J);
listAdapter.add(K);
listAdapter.add(L);
listAdapter.add(M);
}
});
}
}
I was working on a project. It's just showing a list of tasks and Adding new tasks to it. I have 3 CLASSES. One for adding, One for view and One to hold all information (or so I think).
I have 2 tasks in my List already, and they are shown properly.
The problem is, when I add a new task it won't show them in view. I have tried many possible solutions:
simply adding item to list
creating a new list that consists items from old one and rebuilding adapter;
using
notifyDataSetChanged();
alongside with add() command;etc.
Here is my code, it's a bit messy, but I hope you will figure it out.
AndroidListAdapterActivity class:
public class AndroidListAdapterActivity extends ListActivity {
/** Called when the activity is first created. */
Button b1;
Lista o;
ArrayAdapter aa;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
b1=(Button)findViewById(R.id.add);
Log.w("POC", "PA OVO SE ZOVE SVAKI PUT");
o=new Lista();
o.lis.add("S1");
o.lis.add("S2");
aa = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, o.lis);
setListAdapter(aa);
b1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(AndroidListAdapterActivity.this, Dodavanje.class);
startActivity(i);
}
});
}
@Override
public void onResume(){
super.onResume();
aa.notifyDataSetChanged();
if(o.broj>=2){
aa=new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, o.lis2);
setListAdapter(aa);
Log.w("myApp", "CALLED TOO");
}
String yt=String.valueOf(o.ses);
Log.w("teras", yt);
aa.notifyDataSetChanged();
Log.w("myApp", "CaLLED!!!!!!!!!!!!!");
String fx= String.valueOf(o.broj);
Log.w("myAPPe", fx);
}
@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
}
}
Dodavanje (Adding):
public class Dodavanje extends Activity {
Button but;
Button but2;
EditText et;
Lista o;
AndroidListAdapterActivity www;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.dodavanje);
but= (Button)findViewById(R.id.bb);
but2= (Button)findViewById(R.id.bc);
et=(EditText)findViewById(R.id.tt);
www=new AndroidListAdapterActivity();
o = new Lista();
but.setOnClickListener(new View.OnClickListener() {
@SuppressWarnings("unchecked")
@Override
public void onClick(View arg0) {
String t1= et.getText().toString();
//o.lis.add(t1);
o.lis2.addAll(o.lis);
o.lis2.add(t1);
o.lis.add(t1);
o.ses=true;
Log.w("IZVJESTAJ: ", String.valueOf(o.ses));
o.broj++;
String fx=String.valueOf(o.broj);
Log.w("Izbacaj",fx);
et.setText("");
}
});
but2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
finish();
}
});
}
}
Lista (list):
public class Lista extends Application {
ArrayList<String> lis=new ArrayList<String>();
ArrayList<String> lis2=new ArrayList<String>();
int broj =1;
boolean ses= false;
}
You can use notifyDataSetChanged() method to update your listview.In your case you can use.
aa.notifyDataSetChanged();
Please Try this way....
public class MainActivity extends Activity {
ListView lView;
Button btnAdd;
private ListView mainListView ;
private ArrayAdapter<String> listAdapter ;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mainListView = (ListView) findViewById( R.id.listView1 );
btnAdd = (Button)findViewById(R.id.button1);
// Create and populate a List of alphabet names.
String[] alphabets = new String[] { "A", "B", "C", "D",
"E", "F", "G", "H"};
ArrayList<String> alphabetsList= new ArrayList<String>();
alphabetsList.addAll( Arrays.asList(alphabets) );
// Create ArrayAdapter using the for the list.
listAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, alphabetsList);
// Set the ArrayAdapter as the ListView's adapter.
mainListView.setAdapter( listAdapter );
btnAdd.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
// Here I am adding more alphabets in the list on the listener of add button.
listAdapter.add( "I" );
listAdapter.add( "J" );
listAdapter.add( "K" );
listAdapter.add( "L" );
listAdapter.add( "M" );
}
});
}
}
这篇关于如何刷新安卓列表适配器,因此它显示新添加的项目的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!