/** * 在创建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 = Message.obtain();
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);
}
}
}
handleMessage里打印listView的行数是有数据的..页面就不显示
http://bbs.csdn.net/topics/390849529?page=1#post-397901795
http://www.apkbus.com/android-176569-1-1.html