public class LocalSearch extends ListActivity {
public ArrayList<Pension> m_pension;
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.local);
final ListView list = (ListView)findViewById(android.R.id.list);
final ArrayList<Pension> m_pension = new ArrayList<Pension>();
final PensionAdapter m_adapter = new PensionAdapter(LocalSearch.this, R.layout.row, m_pension);
list.setAdapter(m_adapter);
BackThread t = new BackThread();
Thread thread = new Thread(t);
thread.start();
}
class BackThread implements Runnable {
public void run() {
Intent intent = getIntent();
String local = intent.getExtras().getString("local").toString();
String sido = intent.getExtras().getString("sido").toString();
try
{
URL text = new URL("http://kr/parser.php");
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
XmlPullParser parser = factory.newPullParser();
parser.setInput(text.openStream(), "UTF-8");
String uri = "";
while (parser.getEventType() != XmlPullParser.END_DOCUMENT) {
switch(parser.getEventType()){
case XmlPullParser.START_DOCUMENT:
break;
case XmlPullParser.END_DOCUMENT:
break;
case XmlPullParser.TEXT:
break;
case XmlPullParser.START_TAG:
if(parser.getName().equals("pension")){
if(parser.getAttributeValue(2).equals(sido)){
if(parser.getAttributeValue(3).contains(local)){
uri = "http://kr/" + parser.getAttributeValue(1);
Pension p1 = new Pension(parser.getAttributeValue(0), uri, parser.getAttributeValue(10), parser.getAttributeValue(2), parser.getAttributeValue(3));
m_pension.add(p1);
}
}
}
break;
}
parser.next();
}
}
catch(Throwable t) {
}
}
}
private class PensionAdapter extends ArrayAdapter<Pension> {
private ArrayList<Pension> items;
URL imageURL;
public PensionAdapter(Context backThread, int textViewResourceId, ArrayList<Pension> items) {
super(backThread, textViewResourceId, items);
this.items = items;
}
public View getView(final int position, View convertView, ViewGroup parent) {
View v = convertView;
if(v == null) {
LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(R.layout.row, null);
}
Pension p = items.get(position);
if(p != null) {
ImageButton p_home = (ImageButton) v.findViewById(R.id.home);
ImageView p_image = (ImageView) v.findViewById(R.id.img);
TextView p_name = (TextView) v.findViewById(R.id.name);
TextView p_sido = (TextView) v.findViewById(R.id.sido);
TextView p_gugun = (TextView) v.findViewById(R.id.gugun);
if(p_home != null){
try {
p_home.setOnClickListener(new Button.OnClickListener(){
public void onClick(View v) {
String url = items.get(position).getHome().toString();
Intent intent = new Intent(LocalSearch.this, Webview.class);
intent.putExtra("url", url);
startActivity(intent);
finish();
}
});
} catch (Throwable e) {
}
}
if(p_image != null){
try{
imageURL = new URL("p.getImage();
HttpURLConnection conn = (HttpURLConnection) imageURL.openConnection();
BufferedInputStream bis = new BufferedInputStream(conn.getInputStream(), 10240);
Bitmap bm = BitmapFactory.decodeStream(bis);
bis.close();
p_image.setImageBitmap(bm);
} catch(Throwable t) {
}
}
if(p_name != null) {
p_name.setText(p.getName());
}
if(p_sido != null) {
p_sido.setText(p.getSido());
}
if(p_gugun != null) {
p_gugun.setText(p.getGugun());
}
}
return v;
}
}
class Pension {
private String Home;
private String Image;
private String Name;
private String Sido;
private String Gugun;
public Pension(String _Home, String _Image, String _Name, String _Sido, String _Gugun){
this.Home = _Home;
this.Image = _Image;
this.Name = _Name;
this.Sido = _Sido;
this.Gugun = _Gugun;
}
public String getHome() {
return Home;
}
public String getImage() {
return Image;
}
public String getName() {
return Name;
}
public String getSido() {
return Sido;
}
public String getGugun() {
return Gugun;
}
}
파싱이 너무 느려서 스레드로 하라는 얘길 듣고 해보려고 하는데
공부한지 얼마 안되서 잘 모릅니다. ㅠ
이런식으로 하는게 맞나요?
그런데 저렇게 하면 레이아웃은 나오는데 리스트뷰가 안나오네요;;
어디선가 데이터를 못가져오는거 같은데.. ㅠ
어렵군요 ㅠㅠ 도와주세요