안드로이드 개발 질문/답변
(글 수 45,052)
public class RSS_TestActivity extends Activity {
public static Object[] items;
private ArrayList<HashMap<String, Object>> list_board = new ArrayList<HashMap<String, Object>>();
private HashMap<String, Object> map;
private SimpleAdapter sa;
private ArrayList<String> contents;
private ArrayList<HashMap<String, Object>> list_board = new ArrayList<HashMap<String, Object>>();
private HashMap<String, Object> map;
private SimpleAdapter sa;
private ArrayList<String> contents;
static final int PROGRESS_DIALOG = 0;
private ListView lv;
private TextView status;
private ProgressDialog progressDialog;
private ArrayList<String> context;
private ListView lv;
private TextView status;
private ProgressDialog progressDialog;
private ArrayList<String> context;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
status = (TextView) findViewById(R.id.textView1);
lv = (ListView) findViewById(R.id.listView1); // ListView를 보여주는 부분
lv = (ListView) findViewById(R.id.listView1); // ListView를 보여주는 부분
sa = new SimpleAdapter(this, list_board, R.layout.row_board,
new String[] { "subject", "rowid", "content", "power" },
new int[] { R.id.board_subject, R.id.board_date,
R.id.board_writer, R.id.imageView1 });
new String[] { "subject", "rowid", "content", "power" },
new int[] { R.id.board_subject, R.id.board_date,
R.id.board_writer, R.id.imageView1 });
lv.setAdapter(sa);
contents = new ArrayList<String>();
rssParse(context, sa, list_board);
}
}
//
public void rssParse(final ArrayList<String> contexts, final SimpleAdapter sa,
final ArrayList<HashMap<String, Object>> list_board) {
public void rssParse(final ArrayList<String> contexts, final SimpleAdapter sa,
final ArrayList<HashMap<String, Object>> list_board) {
final Handler mHandler = new Handler();
new Thread() {
public void run() {
// list_board.clear();
mHandler.post(new Runnable() {
public void run() {
progressDialog = ProgressDialog.show(
RSS_TestActivity.this, "",
"데이터를 가져오고 있습니다!", true);
}
});
mHandler.post(new Runnable() {
public void run() {
progressDialog = ProgressDialog.show(
RSS_TestActivity.this, "",
"데이터를 가져오고 있습니다!", true);
}
});
try {
URL text = new URL("http://203.230.103.101/web.php");
URL text = new URL("http://203.230.103.101/web.php");
XmlPullParserFactory parserCreator =
XmlPullParserFactory
.newInstance();
XmlPullParser parser = parserCreator.newPullParser();
.newInstance();
XmlPullParser parser = parserCreator.newPullParser();
parser.setInput(text.openStream(), null);
status.setText("로딩중..");
int parserEvent = parser.getEventType();
String tag = "";
String tag = "";
boolean inTitle = false; // 제목여부판단
boolean inItem = false; // 아이템변경 판단
boolean inWriter = false; // 작성자 판단
boolean inDate = false; // 작성일
boolean inContent = false; // 내용
boolean inItem = false; // 아이템변경 판단
boolean inWriter = false; // 작성자 판단
boolean inDate = false; // 작성일
boolean inContent = false; // 내용
int count = 0;
contents.clear(); // 가지고왔던 콘텐츠를 모두 삭제함
String str;
do {
Log.i("test", "" + count);
switch (parserEvent) {
case XmlPullParser.TEXT:
tag = parser.getName();
// 제목
if (inItem && inTitle) {
str = parser.getText();
map.put("subject", str);
}
// 작성일
if (inItem && inDate) {
str = parser.getText();
map.put("reg_date", str);
}
// 작성자
if (inItem && inWriter) {
str = parser.getText();
map.put("rowid", str);
}
// 내용
if (inItem && inContent) {
str = parser.getText();
if (str.length() > 3) {
map.put("power", R.drawable.star1);
// contents.add(str);
} else if (str.length() < 3) {
map.put("power", R.drawable.star);
}
}
break;
String str;
do {
Log.i("test", "" + count);
switch (parserEvent) {
case XmlPullParser.TEXT:
tag = parser.getName();
// 제목
if (inItem && inTitle) {
str = parser.getText();
map.put("subject", str);
}
// 작성일
if (inItem && inDate) {
str = parser.getText();
map.put("reg_date", str);
}
// 작성자
if (inItem && inWriter) {
str = parser.getText();
map.put("rowid", str);
}
// 내용
if (inItem && inContent) {
str = parser.getText();
if (str.length() > 3) {
map.put("power", R.drawable.star1);
// contents.add(str);
} else if (str.length() < 3) {
map.put("power", R.drawable.star);
}
}
break;
case XmlPullParser.END_TAG:
tag = parser.getName();
// 태그가 끝나면...
if (tag.compareTo("data") == 0) {
inItem = false;
list_board.add(map);
}
if (tag.compareTo("subject") == 0) {
inTitle = false;
}
if (tag.compareTo("rowid") == 0) {
inWriter = false;
}
if (tag.compareTo("reg_date") == 0) {
inDate = false;
}
if (tag.compareTo("content") == 0) {
inContent = false;
}
break;
tag = parser.getName();
// 태그가 끝나면...
if (tag.compareTo("data") == 0) {
inItem = false;
list_board.add(map);
}
if (tag.compareTo("subject") == 0) {
inTitle = false;
}
if (tag.compareTo("rowid") == 0) {
inWriter = false;
}
if (tag.compareTo("reg_date") == 0) {
inDate = false;
}
if (tag.compareTo("content") == 0) {
inContent = false;
}
break;
case XmlPullParser.START_TAG:
tag = parser.getName();
Log.i("test", "tag START " + tag);
// 시작하는 태그
if (tag.compareTo("data") == 0) {
inItem = true;
map = new HashMap<String, Object>();
}
//
if (tag.compareTo("subject") == 0) {
inTitle = true;
}
//
if (tag.compareTo("rowid") == 0) {
inWriter = true;
}
//
if (tag.compareTo("reg_date") == 0) {
inDate = true;
}
//
if (tag.compareTo("content") == 0) {
inContent = true;
}
break;
}
tag = parser.getName();
Log.i("test", "tag START " + tag);
// 시작하는 태그
if (tag.compareTo("data") == 0) {
inItem = true;
map = new HashMap<String, Object>();
}
//
if (tag.compareTo("subject") == 0) {
inTitle = true;
}
//
if (tag.compareTo("rowid") == 0) {
inWriter = true;
}
//
if (tag.compareTo("reg_date") == 0) {
inDate = true;
}
//
if (tag.compareTo("content") == 0) {
inContent = true;
}
break;
}
status.setText("파싱중: " +
String.valueOf(count));
parserEvent = parser.next();
count++;
parserEvent = parser.next();
count++;
} while (parserEvent != XmlPullParser.END_DOCUMENT);
status.setText("파싱 끝"); // status를 통해서 파싱 유무를
알려줌
sa.notifyDataSetChanged();
mHandler.post(new Runnable() {
public void run() {
sa.notifyDataSetChanged();
progressDialog.cancel();
}
});
sa.notifyDataSetChanged();
mHandler.post(new Runnable() {
public void run() {
sa.notifyDataSetChanged();
progressDialog.cancel();
}
});
} catch (Exception e) {
}// Log.i("test", e.toString());
}// Log.i("test", e.toString());
// String str = "data : \n";
// str += "subject : " + map.get("subject")+"\n";
// str += "rowid : " + map.get("rowid") +"\n";
// str += "reg_date : " + map.get("reg_date")+"\n";
// str += "content : " + map.get("content");
//
// status.setText(str);
progressDialog.dismiss();
}
}.start();
// str += "subject : " + map.get("subject")+"\n";
// str += "rowid : " + map.get("rowid") +"\n";
// str += "reg_date : " + map.get("reg_date")+"\n";
// str += "content : " + map.get("content");
//
// status.setText(str);
progressDialog.dismiss();
}
}.start();
}
}
}
다이얼로그는 뜨고없어지는데
파싱된화면이 안되네요..답변부탁드립니다




1. 코딩 줄 부터 확인하세요... -_ -
2. 맴버변수 인자로 안넘겨도 됩니다.
3. 쓰레드 코드는 Runnable 안 run 에 작성하셔야 합니다..