【发布时间】:2016-02-16 11:22:00
【问题描述】:
我有这段代码可以从数据库中获取一些数据
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());
}
在我的 MainActivity 中,我得到了这样的结果
DatabaseHandler db = new DatabaseHandler(getApplicationContext());
List<Objects> Objects = db.getAllObjects();
DBadapter adapter = new DBadapter(getApplicationContext(), R.layout.grid_item_layout, Objects);
我的 DBadatper 出现错误,这里
public DBadapter(Context context, int layoutResourceId, List<Objects> listitem) {
super(context, layoutResourceId, listitem);//error here
this.layoutResourceId = layoutResourceId;
this.mcontext =context;
System.out.println("entering adapter");
}
错误是:Cannot Resolve method..
我猜是因为 List 对象,但如何解决呢?
适配器类
public class DBadapter extends ArrayAdapter<Listitem> {
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();
}
Listitem 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) ; //This line raises error
Toast.makeText(mcontext, "intent",
Toast.LENGTH_LONG).show();
}
});
return row;
}
static class ViewHolder {
TextView imageTitle;
ImageView imageView;
}
}
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;}
}
【问题讨论】:
-
堆栈跟踪到底说了什么?
-
@chx101 我无法运行该应用程序,因为我在这里遇到错误
super(context, layoutResourceId, listitem);错误是Cannot resolve method super(android.content.Context,int,java.util.list<com.app.www.app.Objects>) -
DBadapter扩展了什么类?确保您有所需的导入。 -
请查看
SQLiteOpenHelper构造函数。您调用的构造函数不存在。 developer.android.com/reference/android/database/sqlite/…这里有教程:androidhive.info/2011/11/android-sqlite-database-tutorial -
我正在尝试这样做;)
标签: android sqlite android-arrayadapter