3

我試圖得到一個清單標題,我要的是,當我在EDITTEXT主頁上鍵入然後點擊確定按鈕後加入到列表中。現在,我不知道在什麼地方放置我正在從HomepageAdapter上的customAdapter類調用的刷新方法。如何立即刷新自定義適配器列表中的Android?

請查看我的主頁活動:

public class Main_Activity extends Activity implements OnClickListener { 
Button ok; 
EditText addTasklist; 
ListView list_tasklistname; 
TodoTask_Database db; 
CustomAdapter cAdapter; 
List<Tasks> list = new ArrayList<Tasks>(); 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main_layout); 
    ok = (Button)findViewById(R.id.add); 
    ok.setOnClickListener(this); 
    list_tasklistname = (ListView)findViewById(R.id.listview); 
    db = new TodoTask_Database(getApplicationContext()); 
    list = db.getAllTaskList(); 
    CustomAdapter adapter = new CustomAdapter(Main_Activity.this, R.layout.tasklist_row, list); 
    list_tasklistname.setAdapter(adapter); 
    /*list_tasklistname.setOnItemClickListener(new OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> adapterView, View v, int position, 
       long id) { 
     } 
    });*/ 
    db.close(); 
} 
} 
@Override 
public void onClick(View v) { 
    switch(v.getId()) { 
    case R.id.add: 
     addTasklist = (EditText)findViewById(R.id.addTasklist); 
     if(addTasklist!=null) { 
      String addtasktitle = addTasklist.getText().toString(); 
      db = new TodoTask_Database(getApplicationContext()); 
      db.addTaskList(addtasktitle); 
     } 
     break; 
    } 
} 
} 

自定義適配器:

public class CustomAdapter extends ArrayAdapter<Tasks> { 

    private List<Tasks> dataitem; 
    private Activity activity; 

public CustomAdapter(Activity a, int textViewResourceId, List<Tasks> items) { 
    super(a, textViewResourceId, items); 
    this.dataitem = items; 
    this.activity = a; 
} 

public static class ViewHolder{ 
    public TextView tasklistTitle; 
    public TextView createdDate; 
    public CheckBox completedflag; 
} 

    @Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    View v = convertView; 
    ViewHolder holder; 
    if (v == null) { 
     LayoutInflater vi = 
      (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     v = vi.inflate(R.layout.tasklist_row, null); 
     holder = new ViewHolder(); 
     holder.tasklistTitle = (TextView) v.findViewById(R.id.tasklistTitle); 
     holder.createdDate = (TextView) v.findViewById(R.id.createdDate); 
     holder.completedflag = (CheckBox) v.findViewById(R.id.completedflag); 
     v.setTag(holder); 
    } 
    else 
     holder=(ViewHolder)v.getTag(); 

    final Tasks custom = dataitem.get(position); 
    if (custom != null) { 
     holder.tasklistTitle.setText(custom.getTaskListTitle()); 
     holder.createdDate.setText(custom.getTaskListCreated()); 
     holder.completedflag.setText(custom.getTaskListCompletedFlag()); 
    } 
    return v; 
} 
    // refresh Adapter Method calling in Homepage Activity 

    public synchronized void refresAdapter(List<Tasks> dataitems) { 
    dataitem.clear(); 
    dataitem.addAll(dataitems); 
    notifyDataSetChanged(); 
    } 
} 
+0

電話'adapter.notifyDatasetChanged()'刷新列表視圖。 – Raghunandan

回答

8

onclick方法可能會後db.addTaskList(addtasktitle);語句中調用刷新方法refresAdapter(List<Tasks> dataitems)

或者乾脆你可能會寫這db.addTaskList(addtasktitle)adapter.notifyDataSetChanged();聲明

+0

喜,沒有它不工作,因爲當我關閉應用程序,並在仿真器重新啓動後,它在列表中顯示的結果,我想在列表中添加即時列表名稱。 – Shweta

+1

adapter.notifyDataSetChanged後();放入list_tasklistname.setAdapter(適配器);它會爲你工作。 gd lk :) –

-1

調用此方法 adapter.notifyDatasetChanged()

,如果你想這樣做的導航抽屜

,做到在draweropen方法

相關問題