2016-10-10 1 views
0

좋은 하루내 프로젝트에 notifydatasetchanged()를 넣을 곳

내 sqlite에서 항목을 삭제하려고 할 때 문제가 있습니다.
내 목록보기가 업데이트되지 않습니다.

주요 활동
이 내 주요 활동,에서 onCreate와 onResume

이 customadater에서
private CustomAdapter customAdapter; 

@Override 
protected voidonCreate(Bundle savedInstanceState) { 
     lv = (ListView)findViewById(R.id.memo_list_view); 
     customAdapter = new CustomAdapter(this, memoIDS, memoTitles, memoCreatedDates, memoAlarmedDates); 
} 

@Override 
protected voidonResume() { 
memoIDS.clear(); 
    memoTitles.clear(); 
    memoCreatedDates.clear(); 
    memoAlarmedDates.clear(); 

    Cursor c=SplashActivity.db.rawQuery("SELECT * FROM memos", null); 
    if(c.getCount()!=0) { 
     while(c.moveToNext()) { 
      memoIDS.add(c.getString(0)); 
      memoTitles.add(c.getString(1)); 
      memoCreatedDates.add(c.getString(3)); 
      memoAlarmedDates.add(c.getString(4)); 
     } 
     c.close(); 
     lv.setAdapter(customAdapter); 
    } 
} 

CustomAdapter
모두, 내가 만든 레코드를 삭제하려합니다.

내 문제가

public class CustomAdapter extends BaseAdapter{ 
List<String> mMemoIds; 
List<String> mMemoTitle; 
List<String> mMemoCreatedDate; 
List<String> mMemoAlarmedDate; 
Context context; 

    private static LayoutInflater inflater=null; 
public CustomAdapter(MemoListActivity mainActivity, List<String> memoIds, List<String> memoTitle, List<String> memoCreatedDate, List<String> memoAlarmedDate) { 

    mMemoIds = memoIds; 
    mMemoTitle = memoTitle; 
    mMemoCreatedDate = memoCreatedDate; 
    mMemoAlarmedDate = memoAlarmedDate; 
    context = mainActivity; 

    inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
} 
@Override 
public int getCount() { 
    // TODO Auto-generated method stub 
    return mMemoIds.size(); 
} 

@Override 
public Object getItem(int position) { 
    // TODO Auto-generated method stub 
    return position; 
} 

@Override 
public long getItemId(int position) { 
    // TODO Auto-generated method stub 
    return position; 
} 

public class Holder 
{ 
    TextView tViewMemoTitle; 
    TextView tViewMemoCreatedDate; 
    TextView tViewMemoAlarmedDate; 
} 
@Override 
public View getView(final int position, View convertView, ViewGroup parent) { 
    Holder holder=new Holder(); 
    View rowView;  
    rowView = inflater.inflate(R.layout.program_list, null); 

    holder.tViewMemoTitle=(TextView) rowView.findViewById(R.id.memo_list_title);  
    holder.tViewMemoCreatedDate=(TextView) rowView.findViewById(R.id.memo_list_created_date); 
    holder.tViewMemoAlarmedDate=(TextView) rowView.findViewById(R.id.memo_list_alarmed_date); 

    holder.tViewMemoTitle.setText(mMemoTitle.get(position));  
    holder.tViewMemoCreatedDate.setText("Created Date : " + mMemoCreatedDate.get(position)); 
    holder.tViewMemoAlarmedDate.setText("Alarm Date : " + mMemoAlarmedDate.get(position)); 

    rowView.setOnClickListener(new OnClickListener() {    
     @Override 
     public void onClick(View v) { 
      Cursor c=SplashActivity.db.rawQuery("SELECT * FROM memos WHERE id='"+mMemoIds.get(position)+"'", null); 
      if(c.moveToFirst()) 
      { 
       SplashActivity.db.execSQL("DELETE FROM memos WHERE id='"+mMemoIds.get(position)+"'"); 
       notifyDataSetChanged(); 
      } 


     } 
    }); 

    return rowView; 
} 

}, 나는 당신의 삭제 코드 직후

notifydatasetchanged(); 
+0

을 넣을 위치를 알 수 없습니다. 'if (c.moveToFirst()) { SplashActivity.db.execSQL ("DELETE FROM memos WHERE id = '"+ mMemoIds.get (position) + "'")); notifydatasetchanged(); }' –

답변

1
rowView.setOnClickListener(new OnClickListener() {  

     @Override 
     public void onClick(View v) {   
      Cursor c=SplashActivity.db.rawQuery("SELECT * FROM memos WHERE id='"+mMemoIds.get(position)+"'", null); 
      if(c.moveToFirst()) 
      { 
       SplashActivity.db.execSQL("DELETE FROM memos WHERE id='"+mMemoIds.get(position)+"'"); 
       mMemoIds.remove(c.getString(0)); 
       mMemoTitle.remove(c.getString(1)); 
       mMemoCreatedDate.remove(c.getString(3)); 
       mMemoAlarmedDate.remove(c.getString(4)); 
       notifyDataSetChanged(); // Insert your notifydatasetchanged here 
      } 

     } 
    }); 
+0

이미 시도했지만, 내 데이터가 삭제되었지만 여전히 내 listview를 업데이트하지 않습니다. 하지만 아직 행운을 : ( –

+0

편집 된 답변을 확인하십시오. 추신 : memoIDS, memoTitles 등에 대한 다른 목록을 가져 가면 안됩니다. –

+0

하지만 memoIDS, memoTitles 내 mainactivity에서 만들어지며 내 어댑터에서 호출 할 수 없습니다, 내 전체 어댑터를 확인하십시오 –