我正在制作列表视图,但滚动速度太慢。 我在页面中有一个ImageButton和TextView。 如果我点击ImageButton,我可以从相册中获取照片。 如果保存,图像uri(相册专辑)和文本保存到数据库中。 然后listview从数据库中获取数据。
我可以在列表视图上看到图像和文字。 但滚动速度太慢.. 我在这段代码中使用AsyncTask,但作为一个初学者,我不知道如何准确使用AsyncTask来更好地滚动
任何人都可以看到我的代码并指导我吗?
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.list);
lv=(ListView)findViewById(R.id.listView1);
new SubClass().execute();
}
/ * ** * ** * ** * ** * ** * ** CustomCursorAdapter 的 * ** * 的** * ** * ** * ** * ** * 的 /
public class CustomCusorAdapter extends CursorAdapter{
RelativeLayout listview_relative;
public CustomCusorAdapter(Context context, Cursor c) {
super(context, c);
// TODO Auto-generated constructor stub
}
@Override
public void bindView(View v, Context context, Cursor cursor) {
wrap = (ViewWrap) v.getTag();
for(int i=0; i<cursor.getColumnCount();i++){
}
if(cursor.getPosition()%2==1){ //if position is odd, color is something.
wrap.getRelative().setBackgroundColor(0xfff0f8ff);
}
else if(cursor.getPosition()%2==0){ //if position is even, color is something other.
wrap.getRelative().setBackgroundColor(0xfffff5ee);
}
String titleText = cursor.getString(1);
String bodyText = cursor.getString(2);
String dateText = cursor.getString(3);
imageStr = cursor.getString(4);
wrap.getTitle().setText(titleText);
wrap.getDate().setText(dateText);
wrap.getBody().setText(bodyText);
if(imageStr != null){
uri = Uri.parse(imageStr);
wrap.getImage().setImageURI(uri);
}else{
wrap.getImage().setImageResource(R.drawable.resize_camera_input_photo1);
}
}
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
LayoutInflater inflater = getLayoutInflater();
View v = inflater.inflate(R.layout.listview, null);
ViewWrap wrap = new ViewWrap(v);
v.setTag(wrap);
return v;
}
}//CustomCusorAdapter
/ * ** * ** * Sub AsyncTask * * < / EM> ** * ** * ** * ** * ** * < / EM> ** * ** * ** * ** * ** * < / EM> ** * ** * ** * ** * ** * < / EM> ** * ** * ** * *** /
class SubClass extends AsyncTask<Cursor, Cursor, Cursor>{
@Override
protected Cursor doInBackground(Cursor... params) {
mydb = new MyDatabase(getBaseContext());
db = mydb.getReadableDatabase();
cursor = db.rawQuery("select * from "+ TABLE_NAME + " order by _id desc;", null);
startManagingCursor(cursor);
return cursor;
}
@Override
protected void onPostExecute(Cursor result) {
adapter = new CustomCusorAdapter(getBaseContext(), result);
lv.setAdapter(adapter);
mydb.close();
db.close();
}
}
答案 0 :(得分:0)
由于您只是在AsyncTask返回后滚动列表,我认为这不是与获取数据相关的问题。
适配器可以进行一组优化:
希望这有帮助!