80,351
社区成员
发帖
与我相关
我的任务
分享
package com.naxieshu.activity;
import java.util.List;
import java.util.Map;
import com.naxieshu.domain.Book;
import com.naxieshu.service.NaxieshuService;
import com.naxieshu.service.impl.NaxieshuServiceImpl;
import com.naxieshu.util.ImageUtil;
import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import android.widget.Toast;
public class FindActivity extends Activity implements OnClickListener{
protected static final String TAG = "FindActivity";
/**搜索按钮*/
Button searchBtn;
/**搜索输入框*/
TextView searchText;
/**搜索结果列表*/
ListView listView;
/**创建业务层实例*/
NaxieshuService service = new NaxieshuServiceImpl(this);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_find);
searchBtn = (Button)findViewById(R.id.search_btn);
searchText = (TextView)findViewById(R.id.search_text);
listView = (ListView)findViewById(R.id.search_books);
searchBtn.setOnClickListener(this);
}
Handler handler = new Handler() {
public void handleMessage(Message msg) {
if(msg.what == R.id.search_btn){
MyListAdapter myListAdapter = (MyListAdapter) msg.obj;
/**为listView绑定自定义控制*/
listView.setAdapter(myListAdapter);
}
};
};
/**点击事件处理*/
public void onClick(View v) {
switch (v.getId()) {
case R.id.search_btn:
//因为数据源与MyListAdapter中涉及网络连接.所以开个子线程
new Thread(){
public void run() {
String value = searchText.getText().toString();
List<Map<String,Book>> list = service.findBookByNameOrWriter(value);
/**实例自定义控件*/
SimpleAdapter myListAdapter = new MyListAdapter(FindActivity.this,list);
Message msg = new Message();
msg.what = R.id.search_btn;
msg.obj = myListAdapter;
handler.sendMessage(msg);
};
}.start();
break;
}
}
/**自定义List内容控制*/
class MyListAdapter extends SimpleAdapter{
public Context context;
public List<? extends Map<String, ?>> data;
public MyListAdapter(Context context,
List<? extends Map<String, ?>> data) {
super(context, data, 0, null, null);
this.context = context;
this.data = data;
}
/**
* 在创建View资源对象的时候提供效率的缓存策略
*/
class ViewHold{
//book.cover
public ImageView image;
//book.title book.shortIntro
public TextView namtView,introView,nullView;
}
ViewHold hold =null;
@Override
public View getView(int position, View convertView, ViewGroup parent) {
Log.i(TAG, "DDD");
//判断是否第一次执行convertView,如果是第一次就进行布局资源的创建操作
if (convertView == null){
hold = new ViewHold();
//填充加载布局资源
convertView = LayoutInflater.from(getApplicationContext()).inflate(R.layout.activity_find_listview, null);
hold.image = (ImageView)convertView.findViewById(R.id.bookImage);
hold.namtView = (TextView)convertView.findViewById(R.id.bookName);
hold.introView = (TextView)convertView.findViewById(R.id.bookShortIntro);
hold.nullView = (TextView)convertView.findViewById(R.id.booknull);
//保存标记
convertView.setTag(hold);
} else {
hold = (ViewHold) convertView.getTag();
}
//获取数据,进行数据填充
Book book = (Book) data.get(position).get("book");
Bitmap bitmap = ImageUtil.getImageBitmap(book.getCover());
hold.image.setImageBitmap(bitmap);
hold.namtView.setText(book.getTitle());
hold.introView.setText(book.getShortIntro());
return convertView;
}
@Override
public int getCount() {
Log.i(TAG, "getCount:"+this.data.size());
return this.data.size();
}
@Override
public Object getItem(int position) {
return super.getItem(position);
}
@Override
public long getItemId(int position) {
return super.getItemId(position);
}
}
}
package com.naxieshu.activity;
import java.util.List;
import java.util.Map;
import com.naxieshu.domain.Book;
import com.naxieshu.service.NaxieshuService;
import com.naxieshu.service.impl.NaxieshuServiceImpl;
import com.naxieshu.util.ImageUtil;
import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
public class FindActivity extends Activity implements OnClickListener{
protected static final String TAG = "FindActivity";
/**搜索按钮*/
Button searchBtn;
/**搜索输入框*/
TextView searchText;
/**搜索结果列表*/
ListView listView;
/**创建业务层实例*/
NaxieshuService service = new NaxieshuServiceImpl(this);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_find);
searchBtn = (Button)findViewById(R.id.search_btn);
searchText = (TextView)findViewById(R.id.search_text);
listView = (ListView)findViewById(R.id.search_books);
/**绑定点击事件*/
searchBtn.setOnClickListener(this);
}
Handler handler = new Handler() {
public void handleMessage(Message msg) {
if(msg.what == R.id.search_btn){
List<Map<String,Book>> list = (List<Map<String, Book>>) msg.obj;
/**实例自定义控件*/
SimpleAdapter myListAdapter = new MyListAdapter(FindActivity.this,list);
/**为listView绑定自定义控制*/
listView.setAdapter(myListAdapter);
}
};
};
/**点击事件处理*/
public void onClick(View v) {
switch (v.getId()) {
case R.id.search_btn:
//因为数据源与MyListAdapter中涉及网络连接.所以开个子线程
new Thread(){
public void run() {
String value = searchText.getText().toString();
List<Map<String,Book>> list = service.findBookByNameOrWriter(value);
Message msg = new Message();
msg.what = R.id.search_btn;
msg.obj = list;
handler.sendMessage(msg);
};
}.start();
break;
}
}
/**自定义List内容控制*/
class MyListAdapter extends SimpleAdapter{
public Context context;
public List<? extends Map<String, ?>> data;
public MyListAdapter(Context context,
List<? extends Map<String, ?>> data) {
super(context, data, 0, null, null);
this.context = context;
this.data = data;
}
/**
* 在创建View资源对象的时候提供效率的缓存策略
*/
class ViewHold{
//book.cover
public ImageView image;
//book.title book.shortIntro
public TextView namtView,introView;
}
ViewHold hold =null;
@Override
public View getView(int position, View convertView, ViewGroup parent) {
Log.i(TAG, "getView()---");
//判断是否第一次执行convertView,如果是第一次就进行布局资源的创建操作
if (convertView == null){
hold = new ViewHold();
//填充加载布局资源
convertView = LayoutInflater.from(getApplicationContext()).inflate(R.layout.activity_find_listview, null);
hold.image = (ImageView)convertView.findViewById(R.id.bookImage);
hold.namtView = (TextView)convertView.findViewById(R.id.bookName);
hold.introView = (TextView)convertView.findViewById(R.id.bookShortIntro);
//保存标记
Log.i(TAG, "getView()=====");
convertView.setTag(hold);
} else {
Log.i(TAG, "getView()+++++");
hold = (ViewHold) convertView.getTag();
}
//获取数据,进行数据填充
Book book = (Book) data.get(position).get("book");
Bitmap bitmap = ImageUtil.getImageBitmap(book.getCover());
hold.image.setImageBitmap(bitmap);
hold.namtView.setText(book.getTitle());
Log.i(TAG, hold.namtView.getText().toString());
hold.introView.setText(book.getShortIntro());
return convertView;
}
@Override
public int getCount() {
Log.i(TAG,"getCount:"+this.data.size());
return this.data.size();
}
@Override
public Object getItem(int position) {
Log.i(TAG, "getItem():"+getItem(position).toString());
return super.getItem(position);
}
@Override
public long getItemId(int position) {
Log.i(TAG, "getIemId()"+getItemId(position));
return super.getItemId(position);
}
}
}
Message msg = new Message();
这句话改成:
Message msg = Message.obtain();