gpt4 book ai didi

java - 在 Android Eclipse 中将光标值添加到 ArrayList 中

转载 作者:太空宇宙 更新时间:2023-11-04 14:40:21 25 4
gpt4 key购买 nike

我对 Android 开发非常陌生。我正在为我的学校作业创建一个维生素顾问应用程序。我将光标值存储到此 ArrayList 中并遇到此错误:

The method add(int, VitaminInfo) in the type ArrayList<VitaminInfo> is not applicable for the arguments (int, String).

我的 dbAdapter 来自另一个类,其中包含所有 sql 数据库执行。除了使用 results.add 之外,我还可以使用什么其他方法?谢谢。这是我的编码。

VitaminInfo.java

public class VitaminInfo 
{
//private variables
int _id;
String _vitamins;
String _vitaminsfunction;
String _vitaminssources;
int _vitaminsimages;
String _vitaminscategory;

// Empty constructor
public VitaminInfo(){

}
// constructor
public VitaminInfo(int id, String vitamins, String vitaminsfunction, String vitaminssources, int vitaminsimages, String vitaminscategory)
{
this._id = id;
this._vitamins = vitamins;
this._vitaminsfunction= vitaminsfunction;
this._vitaminssources = vitaminssources;
this._vitaminsimages = vitaminsimages;
this._vitaminscategory = vitaminscategory;
}

// constructor
public VitaminInfo(String vitamins, String vitaminsfunction, String vitaminssources, int vitaminsimages, String vitaminscategory)
{
this._vitamins = vitamins;
this._vitaminsfunction= vitaminsfunction;
this._vitaminssources = vitaminssources;
this._vitaminsimages = vitaminsimages;
this._vitaminscategory = vitaminscategory;
}

// getting ID
public int getID(){
return this._id;
}

// setting id
public void setID(int id){
this._id = id;
}

// getting vitamins
public String getVitamins(){
return this._vitamins;
}

// setting vitamins
public void setVitamins(String vitamins){
this._vitamins = vitamins;
}

// getting symptoms
public String getFunctions(){
return this._vitaminsfunction;
}

// setting symptoms
public void setFunctions(String function){
this._vitaminsfunction = function;
}

// getting sources
public String getSources(){
return this._vitaminssources;
}

// setting sources
public void setSources(String sources){
this._vitaminssources = sources;
}

// getting images
public Integer getImages(){
return this._vitaminsimages;
}

// setting images
public void setImages(int sources){
this._vitaminsimages = sources;
}

// getting category
public String getCategory(){
return this._vitaminscategory ;
}

// setting category
public void setCategory(String category){
this._vitaminscategory = category;
}

}

DisplayInfoActivityAdapter.java

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;
}
}

DisplayInfoActivity.java

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

}

最佳答案

您无法添加不扩展 VitaminInfo 的类型的对象到ArrayList<VitaminInfo>String不扩展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));

关于java - 在 Android Eclipse 中将光标值添加到 ArrayList 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25019322/

25 4 0