如何刷新安卓列表适配器,因此它显示新添加的项目 [英] How to Refresh Android List Adapter, so it shows new-added items

查看:352
本文介绍了如何刷新安卓列表适配器,因此它显示新添加的项目的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我工作的一个项目。它只是示出的任务的列表,并添加新的任务,给它。我有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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆