내 프로젝트는 다음과 같이 단순화됩니다. 먼저 데이터 저장을 위해 Data.java 응용 프로그램 메서드를 사용합니다.notifyDataSetChanged를 사용하는 방법
private ArrayList<String> data = new ArrayList<String>();
public int getsize() {
return this.data.size();
}
public String getdata(int i) {
return this.data.get(i);
}
public void adddata(String s) {
return this.data.add(s);
}
내 AActivity 클래스에서 onCreate 아래와 같이 : 그것은 데이터를 포함
Data d = (Data)this.getApplication();
String test = new String[d.getsize()];
for(i = 0; i < d.getsize(); i++) {
test[i] = d.getdata(i);
}
//to show in list
DataAdapter = new DataAdapter (this, test);
setListAdapter(DataAdapter);
그리고 버튼을 클릭, startActivity를 BActivity 클래스 인 경우. BActivity 클래스에서 , 아래의 코드 :
Data d = (Data)this.getApplication();
d.adddata("newdata");
finish();
그리고 AActivity 클래스 onResume() 아래로 :
@Override
public void onResume(){
super.onResume();
this.DataAdapter.notifyDataSetChanged();
}
그런데 왜이 목록을 업데이트되지 않는 이유는 무엇입니까? 데이터가 저장되었음을 확인합니다.
내 데이터 어댑터 :
public DataAdapter(Context ctxt, String[] d) {
this.data = new String[d.length];
myInflater = LayoutInflater.from(ctxt);
int i;
for(i = 0; i < d.length; i++) {
data[i] = d[i];
}
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewTag viewTag;
if(convertView == null) {
convertView = myInflater.inflate(R.layout.row_bookmark_list, null);
viewTag = new ViewTag((TextView)convertView.findViewById(R.id.tv));
convertView.setTag(viewTag);
}
else {
viewTag = (ViewTag) convertView.getTag();
}
viewTag.tv.setText(data[position]);
}
class ViewTag {
TextView tv;
public ViewTag(TextView t) {
this.tv = t;
}
}
시도해보십시오 .BookmarkAdapter = new NASFilesAdapter (this, d); \t this.setListAdapter (BookmarkAdapter); listadapter를 다시 표시하여 목록을 표시합니다. 이 일에 대해 어떤 단점이 있습니까? – brian