내 활동에 맞춤 목록보기를 사용하고 값을 채우려합니다. 하지만, 여기 android.database.staledataexception : 닫힌 커서에 액세스
코드입니다 .... 내가 왜 undersdtand 그나마이 "staledataexception을"점점 오전 오류가 당신이 보인다 "여기에 오류"protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.upadtemailservr);
headText = (TextView)findViewById(R.id.TextView01);
prefsPrivate = getSharedPreferences(PREFS_PRIVATE,Context.MODE_PRIVATE);
Heading = prefsPrivate.getString(KEY_PRIVATE, "the string not found");
headText.setText("Update Mail Server - "+Heading);
AddNew = (Button)findViewById(R.id.Button01);
AddNew.setOnClickListener(this);
m_orders = new ArrayList<Order>();
//the first tried one... this was not working... so i tried the one writtten next to it.
/*
m_orders = new ArrayList<Order>();
this.m_adapter = new OrderAdapter(this, R.layout.row, m_orders);
this.setListAdapter(this.m_adapter);
*/
//new list adapter
MainList = (ListView)findViewById(R.id.mainlist1);
viewOrders = new Runnable()
{
@Override
public void run() {
// TODO Auto-generated method stub
getOrders();
}
};
Thread thread = new Thread(null, viewOrders, "MagentoBackground");
thread.start();
m_ProgressDialog = ProgressDialog.show(UpdateMailServr.this,
"Please wait...", "Retrieving data ...", true);
m_adapter = new OrderAdapter(this,R.layout.row,m_orders);
MainList.setAdapter(m_adapter);
MainList.setOnItemClickListener(this);
}
private Runnable returnRes = new Runnable(){
@Override
public void run() {
if(m_orders != null && m_orders.size() > 0){
m_adapter.notifyDataSetChanged();
for(int i=0;i<m_orders.size();i++)
m_adapter.add(m_orders.get(i));
}
m_ProgressDialog.dismiss();
m_adapter.notifyDataSetChanged();
}
};
public void getOrders() {
m_orders = new ArrayList<Order>();
adapter1 = new DBAdaptertrial2(this);
adapter1.open();
Cursor cur1 = adapter1.fetchAllMeetings();
cur1.moveToFirst();
for(int i=0;i<cur1.getCount();i++)
{
//******Error here**************
if(Heading.equalsIgnoreCase(cur1.getString(1)))
{
try
{
if(!cur1.getString(5).equals(""))
{
Order o1 = new Order();
o1.setMailserver(cur1.getString(5));
o1.setPriority(cur1.getInt(8));
o1.setIpaddr(cur1.getString(2));
m_orders.add(o1);
}
if(!cur1.getString(6).equals(""))
{
Order o2 = new Order();
o2.setMailserver(cur1.getString(6));
o2.setPriority(cur1.getInt(8));
o2.setIpaddr(cur1.getString(2));
m_orders.add(o2);
}
if(!cur1.getString(7).equals(""))
{
Order o3 = new Order();
o3.setMailserver(cur1.getString(6));
o3.setPriority(cur1.getInt(8));
o3.setIpaddr(cur1.getString(2));
m_orders.add(o3);
}
Thread.sleep(3000);
Log.i("ARRAY", ""+ m_orders.size());
}
catch (Exception e) {
Log.e("BACKGROUND_PROC", e.getMessage());
}
runOnUiThread(returnRes);
}
else
{
cur1.moveToNext();
}
cur1.close();
adapter1.close();
}
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
viewOrders = new Runnable()
{
@Override
public void run() {
// TODO Auto-generated method stub
getOrders();
}
};
Thread thread = new Thread(null, viewOrders, "MagentoBackground");
thread.start();
m_ProgressDialog = ProgressDialog.show(UpdateMailServr.this,
"Please wait...", "Retrieving data ...", true);
}
// End of all the list stuff
커서는 커서 어댑터를 사용하고 작업에서 스레드를 시작하지 않아야합니다. – njzk2
좋아 .. 그냥 내버려 둬 .. 다시 돌려 드리겠습니다 – Amar
안녕하세요 ... 내게 CursorAdapter를 사용하는 방법을 안내해 주시겠습니까? 내 의심은 커서를 데이터베이스에서 몇 가지 값을 할당하는 것입니다. 어떻게 그것을 사용하여 데이터를 ArrayList에 넣은 다음 Listadapter에서 사용합니다. – Amar