안드로이드 코드 질문
조회수 1176회
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);
client = new AsyncHttpClient();
response = new BookResponse(MainActivity.this);
editText = (EditText)findViewById(R.id.editText);
button = (Button)findViewById(R.id.button);
listView = (ListView)findViewById(R.id.listView);
adapter = new BookAdapter(MainActivity.this, R.layout.book_item);
listView.setAdapter(adapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
RSS.Channel.Item item = (RSS.Channel.Item) adapter.getItem(position);
bitmapImage = getBitmapFromURL(item.cover_s_url);
Intent intent = new Intent(getApplicationContext(), Choice.class);
intent.putExtra("image", bitmapImage);
startActivity(intent);
}
});
editText.setOnKeyListener(new View.OnKeyListener() {
public boolean onKey(View v, int KeyCode, KeyEvent event) {
if (event.getAction() == KeyEvent.ACTION_DOWN && event.getKeyCode() == KeyEvent.KEYCODE_ENTER) {
button.callOnClick();
}
return false;
}
});
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
keyword = editText.getText().toString().trim();
if (keyword.equals("")) {
Toast.makeText(MainActivity.this, "검색어를 입력하세요.", Toast.LENGTH_LONG).show();
return;
}
pageno = 1;
adapter.clear();
searchBook();
InputMethodManager inputmanager = (InputMethodManager) MainActivity.this.getSystemService(Context.INPUT_METHOD_SERVICE);
inputmanager.hideSoftInputFromInputMethod(getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
}
});
listView.setOnScrollListener(new AbsListView.OnScrollListener() {
boolean lastItemVisibleFlag;
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
if (scrollState == AbsListView.OnScrollListener.SCROLL_STATE_IDLE && lastItemVisibleFlag) {
if (pageno < totalPage) {
pageno++;
searchBook();
}
}
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
lastItemVisibleFlag = (totalItemCount > 0) && (firstVisibleItem + visibleItemCount >= totalItemCount);
}
});
}
public void searchBook(){
RequestParams params = new RequestParams();
params.put("apikey", "9c1072977dc196251aa1b04a2087a5c9");
params.put("q", keyword);
params.put("result", 20);
params.put("pageno", pageno);
params.put("output", "json");
client.get("http://apis.daum.net/search/book", params, response);
}
public static Spanned fromHTML(String source){
return Html.fromHtml(source);
}
class BookAdapter extends BaseAdapter<RSS.Channel.Item>{
public BookAdapter(Activity activity, int resource){
super(activity, resource);
}
View setListItem(View view, RSS.Channel.Item item){
BookHolder holder = null;
if(view == null){
LayoutInflater inflater = getLayoutInflater();
view = inflater.inflate(this.getResourceId(), null);
holder = new BookHolder();
holder.imageView = (ImageView) view.findViewById(R.id.imageView);
holder.textView1 = (TextView) view.findViewById(R.id.textView1);
holder.textView2 = (TextView) view.findViewById(R.id.textView2);
holder.textView3 = (TextView) view.findViewById(R.id.textView3);
holder.textView4 = (TextView) view.findViewById(R.id.textView4);
holder.textView5 = (TextView) view.findViewById(R.id.textView5);
view.setTag(holder);
}else{
holder = (BookHolder) view.getTag();
}
if(item != null){
String title = item.title.replace("<", "<").replace(">", ">");
String info = String.format(Locale.getDefault(), "%s / %s / %s", item.author, item.pub_nm, item.pub_date);
String priceString = String.format(Locale.getDefault(), "<font color='gary'>%d</font> > <font color='blue'><b>%d</b></font>;", item.list_price, item.sale_price);
holder.textView1.setText(fromHTML(title));
holder.textView2.setText(info);
holder.textView3.setText(fromHTML(priceString));
holder.textView4.setText(fromHTML(item.description));
holder.textView5.setText(item.isbn13);
Glide.with(MainActivity.this).load(item.cover_s_url).thumbnail(0.1f).into(holder.imageView);
}
return view;
}
}
class BookResponse extends BaseResponse{
public BookResponse(Context context){
super(context);
}
public void onResponse(String jsonString){
Gson gson = new Gson();
RSS rss = gson.fromJson(jsonString, RSS.class);
totalPage = ((rss.channel.totalCount-1)/20) + 1;
if(totalPage > 3){
totalPage = 3;
}
adapter.addAll(rss.channel.item);
}
}
public Bitmap getBitmapFromURL(String src) {
HttpURLConnection connection = null;
try { URL url = new URL(src);
connection = (HttpURLConnection) url.openConnection();
connection.setDoInput(true); connection.connect();
InputStream input = connection.getInputStream();
Bitmap myBitmap = BitmapFactory.decodeStream(input); return myBitmap; }
catch (IOException e) { e.printStackTrace(); return null;
}
finally{
if(connection!=null)connection.disconnect();
}
}
}
RSS.class
public class Channel{
public int result;
public int totalCount;
public List<Item> item;
public class Item{
public String title;
public String author;
public String pub_nm;
public String description;
public int sale_price;
public int list_price;
public String cover_s_url;
public String pub_date;
public String isbn13;
}
}
}
다음 api로 책 정보, 사진 받아서 리스트뷰로 뿌려주는데 리스트뷰에서 사진을 포지션 받아서 intent로 넘겨서 다른 activity에서 사용하려하는데 사진을 url로 받아오니까 그걸 bitmap으로 바꾸고 포지션 받아서 보내는데 터지네요 포지션값 받아오는걸 잘못한것 같은데 어떻해 해야하나요?
-
(•́ ✖ •̀)
알 수 없는 사용자
댓글 입력