Android SQLite获取所有数据并将其传递给适配器
我有一个从数据库中获取数据的代码Android SQLite获取所有数据并将其传递给适配器,android,sqlite,android-arrayadapter,Android,Sqlite,Android Arrayadapter,我有一个从数据库中获取数据的代码 public List<Objects> getAllObjects() { List<Objects> Objectslist = new ArrayList<Objects>(); // Select All Query String selectQuery = "SELECT * FROM " + TABLE_OBJECTS; SQLiteDatab
public List<Objects> getAllObjects() {
List<Objects> Objectslist = new ArrayList<Objects>();
// Select All Query
String selectQuery = "SELECT * FROM " + TABLE_OBJECTS;
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);
// looping through all rows and adding to list
if (cursor.moveToFirst()) {
do {
Objects object = new Objects();
object.setId(Integer.parseInt(cursor.getString(0)));
object.setName(cursor.getString(1));
object.setUrl(cursor.getString(2));
// Adding contact to list
Objectslist.add(object);
} while (cursor.moveToNext());
}
Objects.java
public class Objects(){
private int id;
private String name;
private String url;
public Objects ( String name, String url)
{
this.name = name;
this.url=url;
}
public Objects()
{
}
public int getId() { return id; }
public String getName() { return name;}
public String getUrl() { return url;}
}
试试这个:
// Changed Listitem to Objects
public class DBadapter extends ArrayAdapter<Objects> {
private static Uri[] mUrls = null;
private static String[] strUrls = null;
private String[] mNames = null;
private Cursor cc = null;
private Context mcontext;
private int layoutResourceId;
private List<?> listitems;
public DBadapter(Context context, int layoutResourceId, List<Objects> listitem) {
super(context, layoutResourceId, listitem);
this.layoutResourceId = layoutResourceId;
this.mcontext =context;
this.listitems = listitem;
System.out.println("entering adapter");
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
System.out.println("entering adapter1");
View row = convertView;
final ViewHolder holder;
if (row == null) {
LayoutInflater inflater = LayoutInflater.from(mcontext);
row = inflater.inflate(layoutResourceId, parent, false);
holder = new ViewHolder();
holder.imageTitle = (TextView) row.findViewById(R.id.text);
holder.imageView = (ImageView) row.findViewById(R.id.imageView);
row.setTag(holder);
} else {
holder = (ViewHolder) row.getTag();
}
// Added (ListItem) cast
Listitem item = (Listitem) getItem(position); // here you should define your getItem(int) function in Objects class
System.out.println("item.getUrl() ");
System.out.println(item.getUrl());
Picasso.with(mcontext).setIndicatorsEnabled(true);
holder.imageTitle.setText(item.getId());
Picasso.
with(mcontext).
load(item.getUrl())
.placeholder(R.drawable.logo)
.fit()
.noFade()
.into(holder.imageView);
holder.imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Log.d("OnImageButton", "Clicked");
Intent intnt =new Intent(mcontext, SingleViewActivity.class);
intnt.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
//Bitmap imageID=holder.imageView;
//intnt.putExtra("ImageId", imageID);
mcontext.startActivity(intnt) ; //This line raises error
Toast.makeText(mcontext, "intent",
Toast.LENGTH_LONG).show();
}
});
return row;
}
static class ViewHolder {
TextView imageTitle;
ImageView imageView;
}
}
//将Listitem更改为对象
公共类DBadapter扩展了ArrayAdapter{
私有静态Uri[]mUrls=null;
私有静态字符串[]strUrls=null;
私有字符串[]mNames=null;
私有游标cc=null;
私有上下文;
私人内部布局资源;
私人物品清单;
公共DBadapter(上下文上下文、int-layoutResourceId、列表项){
超级(上下文、布局资源ID、列表项);
this.layoutResourceId=layoutResourceId;
this.mcontext=上下文;
this.listitems=listitem;
System.out.println(“输入适配器”);
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
System.out.println(“输入适配器1”);
视图行=转换视图;
最终持票人;
if(行==null){
LayoutFlater充气机=LayoutFlater.from(mcontext);
行=充气机。充气(layoutResourceId,父级,false);
holder=新的ViewHolder();
holder.imageTitle=(TextView)row.findViewById(R.id.text);
holder.imageView=(imageView)row.findViewById(R.id.imageView);
row.setTag(支架);
}否则{
holder=(ViewHolder)row.getTag();
}
//添加(ListItem)强制转换
Listitem=(Listitem)getItem(position);//这里您应该在对象类中定义getItem(int)函数
System.out.println(“item.getUrl()”);
System.out.println(item.getUrl());
毕加索.with(mcontext).setindicatorEnabled(true);
holder.imageTitle.setText(item.getId());
毕加索。
使用(mcontext)。
加载(item.getUrl())
.占位符(R.可绘制.徽标)
.fit()
.noFade()
.插入(支架.图像视图);
holder.imageView.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
//TODO自动生成的方法存根
Log.d(“OnImageButton”,“Clicked”);
Intent intnt=新的Intent(mcontext,SingleViewActivity.class);
intnt.addFlags(Intent.FLAG\u ACTIVITY\u NEW\u TASK);
//位图imageID=holder.imageView;
//intnt.putExtra(“ImageId”,ImageId);
mcontext.startActivity(intnt);//此行引发错误
Toast.makeText(mcontext,“意图”,
Toast.LENGTH_LONG).show();
}
});
返回行;
}
静态类视窗夹{
文本视图图像标题;
图像视图图像视图;
}
}
试着看看你做了什么和你需要做什么之间的区别
public class DBadapter extends ArrayAdapter<Objects> {
List<Object> modelItems = null;
Context context;
public Resources res;
public DBadapter (Context context,List<Object> resource) {
super(context,R.layout.grid_item_layout,resource);
// TODO Auto-generated constructor stub
this.context = context;
this.modelItems = resource;
}
公共类DBadapter扩展了ArrayAdapter{
List modelItems=null;
语境;
公共资源;
公共DBadapter(上下文、列表资源){
超级(上下文、右布局、网格项目布局、资源);
//TODO自动生成的构造函数存根
this.context=上下文;
this.modelItems=资源;
}
希望它能对您有所帮助。我建议您更新课程,如下所示: Objects.java:
public class Objects {
private int id;
private String name;
private String url;
public Objects() {
}
public Objects(int id, String name, String url) {
this.id = id;
this.name = name;
this.url = url;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
}
DBAdapter.java:
public class DBAdapter extends ArrayAdapter<Objects> {
private static Uri[] mUrls = null;
private static String[] strUrls = null;
private String[] mNames = null;
private Cursor cc = null;
private Context mcontext;
private int layoutResourceId;
private List<?> listitems;
public DBAdapter(Context context, int layoutResourceId, List<Objects> listitem) {
super(context, layoutResourceId, listitem);
this.layoutResourceId = layoutResourceId;
this.mcontext = context;
this.listitems = listitem;
System.out.println("entering adapter");
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
System.out.println("entering adapter1");
View row = convertView;
final ViewHolder holder;
if (row == null) {
LayoutInflater inflater = LayoutInflater.from(mcontext);
row = inflater.inflate(layoutResourceId, parent, false);
holder = new ViewHolder();
holder.imageTitle = (TextView) row.findViewById(R.id.textView);
holder.imageView = (ImageView) row.findViewById(R.id.imageView);
row.setTag(holder);
} else {
holder = (ViewHolder) row.getTag();
}
Objects item = getItem(position);
System.out.println("item.getUrl() ");
System.out.println(item.getUrl());
Picasso.with(mcontext).setIndicatorsEnabled(true);
holder.imageTitle.setText(item.getId());
Picasso.
with(mcontext).
load(item.getUrl())
.placeholder(R.drawable.logo)
.fit()
.noFade()
.into(holder.imageView);
holder.imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Log.d("OnImageButton", "Clicked");
Intent intnt = new Intent(mcontext, SingleViewActivity.class);
intnt.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
//Bitmap imageID=holder.imageView;
//intnt.putExtra("ImageId", imageID);
mcontext.startActivity(intnt);
Toast.makeText(mcontext, "intent",
Toast.LENGTH_LONG).show();
}
});
return row;
}
static class ViewHolder {
TextView imageTitle;
ImageView imageView;
}
}
公共类DBAdapter扩展了ArrayAdapter{
私有静态Uri[]mUrls=null;
私有静态字符串[]strUrls=null;
私有字符串[]mNames=null;
私有游标cc=null;
私有上下文;
私人内部布局资源;
私人物品清单;
公共DBAdapter(上下文上下文、int-layoutResourceId、列表项){
超级(上下文、布局资源ID、列表项);
this.layoutResourceId=layoutResourceId;
this.mcontext=上下文;
this.listitems=listitem;
System.out.println(“输入适配器”);
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
System.out.println(“输入适配器1”);
视图行=转换视图;
最终持票人;
if(行==null){
LayoutFlater充气机=LayoutFlater.from(mcontext);
行=充气机。充气(layoutResourceId,父级,false);
holder=新的ViewHolder();
holder.imageTitle=(TextView)row.findViewById(R.id.TextView);
holder.imageView=(imageView)row.findViewById(R.id.imageView);
row.setTag(支架);
}否则{
holder=(ViewHolder)row.getTag();
}
对象项=获取项(位置);
System.out.println(“item.getUrl()”);
System.out.println(item.getUrl());
毕加索.with(mcontext).setindicatorEnabled(true);
holder.imageTitle.setText(item.getId());
毕加索。
使用(mcontext)。
加载(item.getUrl())
.占位符(R.可绘制.徽标)
.fit()
.noFade()
.插入(支架.图像视图);
holder.imageView.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
//TODO自动生成的方法存根
Log.d(“OnImageButton”,“Clicked”);
Intent intnt=新的Intent(mcontext,SingleViewActivity.class);
intnt.addFlags(Intent.FLAG\u ACTIVITY\u NEW\u TASK);
//位图imageID=holder.imageView;
//intnt.putExtra(“ImageId”,ImageId);
mcontext.startActivity(intnt);
Toast.makeText(mcontext,“意图”,
Toast.LENGTH_LONG).show();
}
});
返回行;
}
静态类视窗夹{
文本视图图像标题;
图像视图图像视图;
}
}
堆栈跟踪确切地说是什么?@chx101 i c
public class DBadapter extends ArrayAdapter<Objects> {
List<Object> modelItems = null;
Context context;
public Resources res;
public DBadapter (Context context,List<Object> resource) {
super(context,R.layout.grid_item_layout,resource);
// TODO Auto-generated constructor stub
this.context = context;
this.modelItems = resource;
}
public class Objects {
private int id;
private String name;
private String url;
public Objects() {
}
public Objects(int id, String name, String url) {
this.id = id;
this.name = name;
this.url = url;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
}
public class DBAdapter extends ArrayAdapter<Objects> {
private static Uri[] mUrls = null;
private static String[] strUrls = null;
private String[] mNames = null;
private Cursor cc = null;
private Context mcontext;
private int layoutResourceId;
private List<?> listitems;
public DBAdapter(Context context, int layoutResourceId, List<Objects> listitem) {
super(context, layoutResourceId, listitem);
this.layoutResourceId = layoutResourceId;
this.mcontext = context;
this.listitems = listitem;
System.out.println("entering adapter");
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
System.out.println("entering adapter1");
View row = convertView;
final ViewHolder holder;
if (row == null) {
LayoutInflater inflater = LayoutInflater.from(mcontext);
row = inflater.inflate(layoutResourceId, parent, false);
holder = new ViewHolder();
holder.imageTitle = (TextView) row.findViewById(R.id.textView);
holder.imageView = (ImageView) row.findViewById(R.id.imageView);
row.setTag(holder);
} else {
holder = (ViewHolder) row.getTag();
}
Objects item = getItem(position);
System.out.println("item.getUrl() ");
System.out.println(item.getUrl());
Picasso.with(mcontext).setIndicatorsEnabled(true);
holder.imageTitle.setText(item.getId());
Picasso.
with(mcontext).
load(item.getUrl())
.placeholder(R.drawable.logo)
.fit()
.noFade()
.into(holder.imageView);
holder.imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Log.d("OnImageButton", "Clicked");
Intent intnt = new Intent(mcontext, SingleViewActivity.class);
intnt.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
//Bitmap imageID=holder.imageView;
//intnt.putExtra("ImageId", imageID);
mcontext.startActivity(intnt);
Toast.makeText(mcontext, "intent",
Toast.LENGTH_LONG).show();
}
});
return row;
}
static class ViewHolder {
TextView imageTitle;
ImageView imageView;
}
}