java—在Android Eclipse中将光标值添加到ArrayList中
我是android开发的新手。我正在为我的学校作业创建一个维生素顾问应用程序。我正在将光标值存储到此ArrayList中,遇到以下错误:java—在Android Eclipse中将光标值添加到ArrayList中,java,android,eclipse,sqlite,arraylist,Java,Android,Eclipse,Sqlite,Arraylist,我是android开发的新手。我正在为我的学校作业创建一个维生素顾问应用程序。我正在将光标值存储到此ArrayList中,遇到以下错误: 类型ArrayList中的add(int,VitaminInfo)方法不适用于参数(int,String)。 我的dbAdapter来自另一个类,该类包含所有sql数据库执行。除了使用results.add,我还可以使用其他什么方法?非常感谢。这是我的代码 VitaminInfo.java DisplayInfoActivityAdapter.java 公共
类型ArrayList中的add(int,VitaminInfo)方法不适用于参数(int,String)。
我的dbAdapter来自另一个类,该类包含所有sql数据库执行。除了使用results.add,我还可以使用其他什么方法?非常感谢。这是我的代码
VitaminInfo.java
DisplayInfoActivityAdapter.java
公共类DisplayInfoActivityAdapter扩展了BaseAdapter
{
私有静态数组列表vitaminDetailsArrayList;
私有整数[]imgid=
{
R.drawable.vb1,
R.drawable.vb2,
R.drawable.vb3,
R.drawable.vb6,
R.drawable.fc,
R.drawable.vb12,
R.drawable.vbc,
R.drawable.va,
R.drawable.vd,
R.drawable.ve,
R.drawable.vk
};
私人充气机;
public DisplayInfoActivityAdapter(上下文、ArrayList结果)
{
vitaminDetailsArrayList=结果;
l_Inflater=从(上下文)开始的布局更平坦;
}
public int getCount()
{
返回vitaminDetailsArrayList.size();
}
公共对象getItem(int位置)
{
返回vitaminDetailsArrayList.get(位置);
}
公共长getItemId(int位置)
{
返回位置;
}
公共视图getView(int位置、视图转换视图、视图组父视图)
{
视窗座;
if(convertView==null)
{
convertView=l_充气机。充气(R.layout.info_rowlayout,null);
holder=新的ViewHolder();
holder.vitaminImage=(ImageView)convertView.findViewById(R.id.vitaminImage);
holder.vitaminName=(TextView)convertView.findViewById(R.id.vitaminName);
holder.vitaminFunction=(TextView)convertView.findViewById(R.id.vitaminFunction);
holder.vitaminSources=(TextView)convertView.findViewById(R.id.vitaminSources);
holder.vitaminCategory=(TextView)convertView.findViewById(R.id.vitaminCategory);
convertView.setTag(支架);
}
其他的
{
holder=(ViewHolder)convertView.getTag();
}
holder.vitaminName.setText(vitaminDetailsArrayList.get(position.getvitains());
holder.vitaminFunction.setText(vitaminDetailsArrayList.get(position.getFunctions());
holder.vitaminSources.setText(vitaminDetailsArrayList.get(position.getSources());
holder.vitaminCategory.setText(vitaminDetailsArrayList.get(position.getCategory());
holder.vitaminImage.setImageResource(imgid[vitaminDetailsArrayList.get(position.getImages()-1]);
返回视图;
}
静态类视窗夹
{
TextView vitaminName;
TextView维生素功能;
TextView vitaminSources;
图像视图;
TextView维生素类;
}
}
DisplayInfoActivity.java
公共类DisplayInfoActivity扩展活动{
ListView tablelayout_=null;
阵列适配器;
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.info\u布局);
RelativeLayout视图=(RelativeLayout)findViewById(R.id.inforelativelayout1);
view.setBackgroundColor(Color.CYAN);
ArrayList image_details=GetSearchResults();
最终ListView lv1=(ListView)findViewById(R.id.contentlist);
lv1.setAdapter(新的DisplayInfoActivityAdapter(此,图像_详细信息));
}
//------对于“查看”按钮------
私有ArrayList GetSearchResults()
{
ArrayList结果=新建ArrayList();
VitaminInfo VitaminInfo;
DatabaseHandler dbAdaptor=新的DatabaseHandler(getApplicationContext());
游标=空;
试一试{
dbAdaptor.open();
cursor=dbAdaptor.getAllInfo();
cursor.moveToFirst();
做{
int id=cursor.getInt(0);
String=cursor.getString(1);
字符串函数=cursor.getString(2);
字符串源=cursor.getString(3);
字符串image=cursor.getString(4);
字符串类别=cursor.getString(5);
结果:添加(1,维生素);
结果:增加(2,功能);
结果:增加(3,来源);
结果:添加(4,图像);
结果:增加(5,类别);
}
while(cursor.moveToNext());
}
捕获(例外e){
Log.d(“联系人经理”,e.getMessage());
}
最后{
如果(光标!=null)
cursor.close();
if(dbAdaptor!=null)
dbAdaptor.close();
}
返回结果;
}//点心
}
您不能将不扩展VitaminInfo
的类型的对象添加到ArrayList
<代码>字符串不扩展VitaminInfo
。您必须创建一个VitaminInfo
对象,并将该对象添加到列表中:
int imageAsInt = // convert your image to int here or get it as int in the first place
results.add(new VitaminInfo(id, vitamin, function, sources, imageAsInt, category));
public class DisplayInfoActivityAdapter extends BaseAdapter
{
private static ArrayList<VitaminInfo> vitaminDetailsArrayList;
private Integer[] imgid =
{
R.drawable.vb1,
R.drawable.vb2,
R.drawable.vb3,
R.drawable.vb6,
R.drawable.fc,
R.drawable.vb12,
R.drawable.vbc,
R.drawable.va,
R.drawable.vd,
R.drawable.ve,
R.drawable.vk
};
private LayoutInflater l_Inflater;
public DisplayInfoActivityAdapter(Context context, ArrayList<VitaminInfo> results)
{
vitaminDetailsArrayList = results;
l_Inflater = LayoutInflater.from(context);
}
public int getCount()
{
return vitaminDetailsArrayList.size();
}
public Object getItem(int position)
{
return vitaminDetailsArrayList.get(position);
}
public long getItemId(int position)
{
return position;
}
public View getView(int position, View convertView, ViewGroup parent)
{
ViewHolder holder;
if (convertView == null)
{
convertView = l_Inflater.inflate(R.layout.info_rowlayout, null);
holder = new ViewHolder();
holder.vitaminImage = (ImageView) convertView.findViewById(R.id.vitaminImage);
holder.vitaminName = (TextView) convertView.findViewById(R.id.vitaminName);
holder.vitaminFunction = (TextView) convertView.findViewById(R.id.vitaminfunction);
holder.vitaminSources = (TextView) convertView.findViewById(R.id.vitaminsources);
holder.vitaminCategory = (TextView) convertView.findViewById(R.id.vitamincategory);
convertView.setTag(holder);
}
else
{
holder = (ViewHolder) convertView.getTag();
}
holder.vitaminName.setText(vitaminDetailsArrayList.get(position).getVitamins());
holder.vitaminFunction.setText(vitaminDetailsArrayList.get(position).getFunctions());
holder.vitaminSources.setText(vitaminDetailsArrayList.get(position).getSources());
holder.vitaminCategory.setText(vitaminDetailsArrayList.get(position).getCategory());
holder.vitaminImage.setImageResource(imgid[vitaminDetailsArrayList.get(position).getImages() - 1]);
return convertView;
}
static class ViewHolder
{
TextView vitaminName;
TextView vitaminFunction;
TextView vitaminSources;
ImageView vitaminImage;
TextView vitaminCategory;
}
}
public class DisplayInfoActivity extends Activity {
ListView tablelayout_Vitamins = null;
ArrayAdapter<String> listAdapter;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.info_layout);
RelativeLayout view = (RelativeLayout) findViewById(R.id.inforelativelayout1);
view.setBackgroundColor( Color.CYAN );
ArrayList<VitaminInfo> image_details = GetSearchResults();
final ListView lv1 = (ListView) findViewById(R.id.contentlist);
lv1.setAdapter(new DisplayInfoActivityAdapter(this, image_details));
}
// ------ for "View" Button -------
private ArrayList<VitaminInfo> GetSearchResults()
{
ArrayList<VitaminInfo> results = new ArrayList<VitaminInfo>();
VitaminInfo vitaminInfo;
DatabaseHandler dbAdaptor = new DatabaseHandler(getApplicationContext());
Cursor cursor = null;
try{
dbAdaptor.open();
cursor = dbAdaptor.getAllInfo();
cursor.moveToFirst();
do{
int id = cursor.getInt(0);
String vitamin = cursor.getString(1);
String function = cursor.getString(2);
String sources = cursor.getString(3);
String image = cursor.getString(4);
String category = cursor.getString(5);
results.add(1, vitamin);
results.add(2, function);
results.add(3, sources);
results.add(4, image);
results.add(5, category);
}
while (cursor.moveToNext());
}
catch (Exception e){
Log.d("Contact Manager", e.getMessage());
}
finally{
if (cursor != null)
cursor.close();
if (dbAdaptor != null)
dbAdaptor.close();
}
return results;
}//refreshTable
}
int imageAsInt = // convert your image to int here or get it as int in the first place
results.add(new VitaminInfo(id, vitamin, function, sources, imageAsInt, category));