【发布时间】:2015-02-02 08:50:57
【问题描述】:
好的,伙计们,事情是这样的,我有一个使用 ODATA service 的应用程序,在 SMP server 中,我得到这样的数据:
public class callService extends AsyncTask<Void, Void, ArrayList<String>>
{
public ArrayList<String> doInBackground(Void... params)
{
ODataConsumer c = ODataJerseyConsumer.create("http://MyUrlService:8080");
List<OEntity> listEntities = c.getEntities("MYENTITYTOCONSUME").execute().toList();
System.out.println("Size" + listEntities.size());
if (listEntities.size() > 0)
{
for (OEntity entity : listEntities)
{
zmob_kunnr.add((String) entity.getProperty("Name1").getValue()
+ " - "
+ entity.getProperty("Kunnr").getValue().toString());
}
}
return zmob_kunnr;
}
protected void onPostExecute(ArrayList<String> result)
{
super.onPostExecute(result);
adapter = new ArrayAdapter<String>(ConsumoKnuur.this, android.R.layout.simple_list_item_1, result);
list.setAdapter(adapter);
}
}
好的,我从网络上得到了这个解决方案,可以实现为列表,我需要存储这个实体,其中一个是客户列表,并从这个实体中获取两个属性并保存在我的数据库中:
Entity Customer:Custormer_ID, Customer_Name
这是我调用我的 sqlite 的代码:
public void sqlite()
{
sql_obj.open();
sql_obj.deleteAll();
for(int i=0; i < zmob_kunnr.size(); i++)
{
sql_obj.insert(zmob_kunnr.get(i).toString(), zmob_kunnr.get(i).toString() );
}
sql_obj.close();
}
还有我的 SQLite:
private static final String TABLE_CLIENTE = "CREATE TABLE "
+ TB_CLIENTE
+ "(ID_CLIENTE INTEGER PRIMARY KEY AUTOINCREMENT, " //Id for controller my logics
+ " Kunnr TEXT , " //customer ID
+ " Name1 TEXT );"; //customer_name
public long insert(String name1, String Kunnr)
{
ContentValues initialValues = new ContentValues();
initialValues.put("Name1", Name1); //Customer_Name
initialValues.put("Kunnr", Kunnr); //Customer_ID
return database.insert(TB_CLIENTE, null, initialValues);
}
当然,我的其他方法并不重要,所以当我在 sql 调用方法中运行“for”时会发生什么,我得到列表的 size() 和列表的行并存储整个每次都在数据库的一列中,所以我得到了两个具有相同值的不同表,
我怎样才能改变解决这个问题,而不是在列表中消费我需要在数组中消费?或者我需要创建一个获取列表值的方法,然后在 ,(coma) 之后,创建两个不同的对象来存储这些数据?
我在网上看了很久,没有找到,可能是因为我还不知道,所以,我不知道我在找什么,我正在使用odata4j API 这是文档的链接,http://odata4j.org/v/0.7/javadoc/
我是编程新手,所以我真的遇到了麻烦,任何有帮助的建议都将是真正的,不胜感激,
非常感谢,祝你有美好的一天!!!
【问题讨论】:
-
zmob_kunnr是如何定义的?如果您将 zmob_kunnr 的类型更改为ArrayList<OEntity>,您可以在您的insert语句中使用sql_obj.insert(zmob_kunnr.get(i).getProperty("Name1").getValue(), zmob_kunnr.get(i).getProperty("Kunnr").getValue().toString()); -
您好 Nayeem 非常感谢您的有用回答,我理解您的逻辑,现在说得通了,我将 mob_kunnr 更改为 ArrayList
,我还更改了 zmob_kunnr 的所有其他调用,但是方法 zmob_kunnr.add 给我“添加”一个问题(类型 ArrayList 中的方法 add(OEntity) 不适用于参数(String))更改为 addAll 并且如果我仍然存在问题并且告诉我要添加 -
哈哈好吧我不是Nayeem,但你需要将
for循环的主体更改为zmob_kunnr.add(entity) -
哦对不起lan2thedv,我现在才意识到我的赌注对不起!!!
-
嘿,非常感谢,我可以解决我的问题,非常感谢我很感激,顺便说一下,在这个解决方案中我能够获得 4 个不同的实体?w 或者我需要创建一个每个循环??
标签: java android arrays sqlite odata