2015-10-14 2 views
0

У меня есть диалог, который используется для добавления проекта. Диалог (Addproject.java) - это действие, которое вызывается для другого действия (Projects_list.java). В Projects_list.java. У меня есть listview, который использует customadapter (Custom_projectList_adapter.java).notifyDataSetChanged on CustomAdapter не работает

После добавления любого проекта в диалоговом окне я хочу обновить содержимое списка. Я вызвал notifyDataSetChanged, но он не работает.

Вот мой код:

Projects_list.java

public class Projects_list extends ActionBarActivity { 
    public String[] itemname ={"Safari","Camera","Global","FireFox","UC Browser","Android Folder", "VLC Player","Cold War"}; 
    Custom_projectList_adapter adapter; 
    ListView list; 
    final ArrayList<String> projectlist = new ArrayList<String>(); 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.projects_list); 

     for (int i = 0; i < itemname.length; ++i) { 
      projectlist.add(itemname[i]); 
     } 

     CircleButton addproject = (CircleButton) findViewById(R.id.addproject); 
     adapter = new Custom_projectList_adapter(this,projectlist); 
     list = (ListView) findViewById(R.id.projectlistView); 
     list.setChoiceMode(ListView.CHOICE_MODE_SINGLE); 
     list.setAdapter(adapter); 

     addproject.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 

       Intent addproject = new Intent(Projects_list.this, AddProject.class); 
       startActivity(addproject); 
      } 
     }); 
    } 

    public void additem(String item) { 
     projectlist.add(item); 
     adapter.notifyDataSetChanged(); 
    } 
} 

Это мой AddProject.java

public class AddProject extends Activity { 
    EditText newProjectname; 
    String project_name; 
    Button add_project; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.add_project); 

     newProjectname = (EditText) findViewById(R.id.add_project_name); 
     add_project = (Button) findViewById(R.id.btn_add_project); 

     add_project.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       String add = newProjectname.getText().toString().trim(); 
       Projects_list pl = new Projects_list(); 
       pl.additem(add); 
      } 
     }); 
    } 

} 

И это мой Custom_projectList_adapter.java

public class Custom_projectList_adapter extends ArrayAdapter<String>{ 

    private final Activity context; 
// private final String[] projectName; 
    ArrayList<String> projectName; 
    int selectedoption = 0; 
    public Custom_projectList_adapter(Activity context, ArrayList<String> projectName) { 
     super(context, R.layout.custom_project_list,projectName); 
     this.context = context; 
     this.projectName = projectName; 
    } 

    @Override 
    public View getView(final int position, View convertView, ViewGroup parent) { 
     LayoutInflater inflater = context.getLayoutInflater(); 
     View rowView = inflater.inflate(R.layout.custom_project_list, null, true); 

     RadioButton radio_project = (RadioButton) rowView.findViewById(R.id.radio_project); 
     radio_project.setText(projectName.get(position)); 
     radio_project.setChecked(position == selectedoption); 
     radio_project.setTag(position); 
     radio_project.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       selectedoption = (Integer) view.getTag(); 
       notifyDataSetChanged(); 
       Toast.makeText(context, projectName.get(position), Toast.LENGTH_SHORT).show(); 
      } 
     }); 
     return rowView; 
    } 

} 

Как я новичок. Я очень смущен этим. Помогите мне, пожалуйста.

+0

: добавить 'adapter = new Custom_projectList_adapter (this, projectlist);' и 'list.setAdapter (адаптер);' before' adapter.notifyDataSetChanged(); '!! – AndiGeeky

+0

it dint работал @AndiGeeky .. говорит java.lang.IllegalStateException: Системные службы недоступны для операций до onCreate(). –

ответ

1
add_project.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      String add = newProjectname.getText().toString().trim(); 
      Projects_list pl = new Projects_list(); 
      pl.additem(add); 
     } 
    }); 

Здесь экземпляр нового Projects_list, таким образом pl.additem(add); не будет обновлять данные адаптера. И не рекомендуется создавать экземпляр Activity вручную.

Я предлагаю вам использовать Dialog, а не запускать другой Activity, чтобы добавить проект.

+0

Спасибо @shhp, я дам ему попробовать ... –

Смежные вопросы