거두절미하고 질문드리겠습니다~!


현재 listview를 활용하여 서버로부터 게시글을 받아와 화면에 뿌려주는 어플을 구현중에 있습니다.

다른곳은 전부 다 잘 작동이 되는데 갱신 부분에서 문제가 생기는듯 합니다..

현재 액티비티의 구성은 다음과 같습니다.


ㅡㅡㅡㅡㅡㅡㅡㅡ


리스트뷰


ㅡㅡㅡㅡㅡㅡㅡㅡ

에딧 텍스트 창

ㅡㅡㅡㅡㅡㅡㅡㅡ

현재 이런 식으로 구성되어 있는데

이상태에서 액티비티를 실행하면 리스트뷰에는 바로 데이터가 뜨지 않습니다.

근데 에딧텍스트를 제가 클릭하면 소프트키보드창이 뜨면서 함께 리스트뷰에 내용도 올라옵니다..


어디가 문젠질 잘 모르겠습니다.. 어딘가 순서에서 잘못된것 같은데...

많은 조언 부탁드리겠습니다..


관련부분 소스로 첨부하겠습니다.


public class snsView extends ListActivity {

EditText etContent;


public static ArrayList<snsData> list;

public static ContentAdapter s_adapter;


int num = 0;


private ProgressDialog progress;


@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

requestWindowFeature(Window.FEATURE_NO_TITLE);

this.getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

setContentView(R.layout.snsview);


etContent = (EditText) findViewById(R.id.etSNSContent);


list = new ArrayList<snsData>();

s_adapter = new ContentAdapter(this, R.layout.snscontent, list);

setListAdapter(s_adapter);


setList();

writeBtn.setOnClickListener(new OnClickListener() {


@Override

public void onClick(View v) {

if (LoginStatus.isStatus()) {

String comment = etContent.getText().toString();


SimpleDateFormat mSimpleDateFormat = new SimpleDateFormat(

"yyyy.MM.dd HH:mm:ss", Locale.KOREA);

Date date = new Date();

String mTime = mSimpleDateFormat.format(date);


new networkProcess(3, userid, comment, mTime);


progressProcess();

// refreshView();

etContent.setText("");

etContent.clearFocus();

InputMethodManager mgr = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); 

mgr.hideSoftInputFromWindow(etContent.getWindowToken(), 0);


}

}


});


}


private void setList() {

list.clear();

select(); //XML로 받아와 파싱하는곳까지 모두 잘 돌아감.

}


public void refreshView() {

s_adapter.notifyDataSetChanged();

setList();

}



public class ContentAdapter extends ArrayAdapter<snsData> {


private ArrayList<snsData> items;


public ContentAdapter(Context context, int textViewResourceId,

ArrayList<snsData> items) {

super(context, textViewResourceId, items);

// TODO Auto-generated constructor stub

this.items = items;


}


public View getView(int position, View convertView, ViewGroup parent) {


View v = convertView;

ViewHolder holder;


if (v == null) {

LayoutInflater vi = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);

v = vi.inflate(R.layout.snscontent, null);

holder = new ViewHolder(v);

v.setTag(holder);

} else

holder = (ViewHolder) v.getTag();


snsData data = items.get(position);


holder.getContent().setText(data.getContent());

holder.getDate().setText(data.getDate());

holder.getNick().setText(data.getNick());


holder.getButton().setTag(Integer.valueOf(position));

holder.getButton().setOnClickListener(delete);

holder.getButton().setVisibility(View.INVISIBLE);

holder.getLayout().setTag(Integer.valueOf(position));

holder.getLayout().setOnClickListener(layout);


return v;

}

}

class ViewHolder {


ViewGroup layout;

View Base;

TextView content;

TextView date;

TextView nick;

Button deleteBtn;


ViewHolder(View base) {

this.Base = base;

}


public ViewGroup getLayout() {

if (layout == null)

layout = (ViewGroup) Base.findViewById(R.id.snsContentLayout);


return layout;

}


public Button getButton() {

if (deleteBtn == null)

deleteBtn = (Button) Base.findViewById(R.id.snsDeleteBtn);


return deleteBtn;

}


public TextView getContent() {

if (content == null)

content = (TextView) Base.findViewById(R.id.snsContent);


return content;

}


public TextView getDate() {

if (date == null)

date = (TextView) Base.findViewById(R.id.snsDate);

return date;

}


public TextView getNick() {

if (nick == null)

nick = (TextView) Base.findViewById(R.id.snsNick);

return nick;

}

}


void progressProcess() {

progress = ProgressDialog

.show(snsView.this, "", "갱신중입니다.", true, false);

Thread thread = new Thread(new Runnable() {

public void run() {

// 처리할 부분

mHandler.sendEmptyMessage(0);

}

});

thread.start();

}


private Handler mHandler = new Handler() {

public void handleMessage(Message msg) {

progress.dismiss(); // 다이얼로그 삭제

refreshView();

}

};


}