2012-09-24 3 views
2

안드로이드에서 SQLiteDatabase를 사용하고 있습니다. 나는 행을 지운 후에리스트 뷰를 참조 할 수 없다. 다음과 같이 내 코드는 다음과 같습니다행을 삭제 한 후 데이터베이스를 새로 고칠 수 없습니다.

public void delete(String i) { 
    // TODO Auto-generated method stub 
    String [] columns= new String[]{KEY_ROW_ID,KEY_FHR,KEY_ID,KEY_NAME,KEY_AGE}; 
    Cursor c= our_db.query(KEY_TABLE, columns, null, null,null, null, null); 
    our_db.delete(KEY_TABLE, KEY_NAME+ "="+"\'"+i+"\'", null) ; 
    c.requery(); 

} 

내가 efficientadapter에서 viewholder에서 호출. 아래 코드는 내가 부르는 코드입니다.

 holder.del.setOnClickListener(new OnClickListener() { 
       private int pos=position; 
       public void onClick(View v) { 
        // TODO Auto-generated method stub 
        final long newpos; 
        sql_get db = new sql_get(c); 
        db.open(); 

        db.delete(DATA[pos]);    
        notifyDataSetChanged();      
        db.close(); 
       } 
      }); 

아무도 내가 문제를 찾아 내도록 도와 줄 수 있습니까? 어떤 오류도주지 않습니다. 행을 삭제했지만보기를 업데이트하지 않습니다. 난 당신이 같은를 제거 할 수 있다고 생각 당신은 목록보기에 대한 데이터를 보유하는 개체에서 또한 행을 삭제해야

private static class EfficientAdapter extends BaseAdapter { 
    private LayoutInflater mInflater; 
    private Bitmap mIcon1; 
    private Bitmap mIcon2; 
    private Bitmap mIcon3; 
    private Bitmap mIcon4; 

    Context c; 
    int window; 

    public EfficientAdapter(Context context) { 
     // Cache the LayoutInflate to avoid asking for a new one each time. 
     mInflater = LayoutInflater.from(context); 
     this.c=context; 
     // Icons bound to the rows. 
     mIcon1 = BitmapFactory.decodeResource(context.getResources(), R.drawable.icon48x48_1); 
     mIcon2 = BitmapFactory.decodeResource(context.getResources(), R.drawable.icon48x48_2); 
     mIcon3 = BitmapFactory.decodeResource(context.getResources(), R.drawable.del1); 
     mIcon4 = BitmapFactory.decodeResource(context.getResources(), R.drawable.edit); 
    }  
    public int getCount() { 
     return DATA.length; 
    }  
    public Object getItem(int position) { 
     return position; 
    } 
    public long getItemId(int position) { 
     return position; 
    }  
    public View getView(final int position, View convertView, ViewGroup parent) { 
     // A ViewHolder keeps references to children views to avoid unneccessary calls 
     // to findViewById() on each row. 
     ViewHolder holder; 
     //int i=0; 


      convertView = mInflater.inflate(R.layout.list_item_icon_text, null); 

      // Creates a ViewHolder and store references to the two children views 
      // we want to bind data to. 
      holder = new ViewHolder(); 
      holder.text = (TextView) convertView.findViewById(R.id.text); 
      holder.icon = (ImageView) convertView.findViewById(R.id.icon); 
      holder.del=(ImageView)convertView.findViewById(R.id.icon1); 
      holder.edit=(ImageView)convertView.findViewById(R.id.icon2); 

      window=position; 
      holder.text.setOnClickListener(new OnClickListener() { 
       private int pos=position; 

       //private int pos = position; 
       public void onClick(View v) { 

        System.out.println(window); 
        sql_get db = new sql_get(c); 
        db.open(); 
        String ret_id= db.getid(DATA[pos]); 
        String ret_name = db.getname(DATA[pos]);       
        String ret_age= db.getage(DATA[pos]); 
        String ret_fhr= db.getfhr(DATA[pos]);      
        String[] result = {ret_id,ret_name,ret_age,ret_fhr}; 
        db.close(); 
        Bundle b=new Bundle(); 
        b.putStringArray("key",result); 
        Intent i =new Intent(c,Tabs.class); 
        i.putExtras(b); 
        c.startActivity(i) ; 
        Toast.makeText(c, getItemId(position)+""+" Click- text " +pos+" "+ret_name, Toast.LENGTH_SHORT).show(); 
       } 
      });     
      holder.del.setOnClickListener(new OnClickListener() { 
       private int pos=position; 
       public void onClick(View v) { 
        // TODO Auto-generated method stub 
        final long newpos;      
        sql_get db = new sql_get(c); 
        db.open(); 
        db.delete(DATA[pos]);      
        notifyDataSetChanged();      
        db.close();      
        Toast.makeText(c, "deleting " + DATA[pos], Toast.LENGTH_SHORT).show();      
       } 
      }); 
      convertView.setTag(holder); 
     }   
     holder.text.setText(DATA[position]); 
     holder.icon.setImageBitmap((position & 1) == 1 ? mIcon1 : mIcon2); 
     holder.del.setImageBitmap(mIcon3); 
     holder.edit.setImageBitmap(mIcon4); 
     return convertView;  
    static class ViewHolder { 
     ImageView del; 
     TextView text; 
     ImageView icon; 
     ImageView edit; 
    }  
} 
+0

당신이 –

답변

1

해결책을 찾았습니다. 위에서 말한 것처럼 DATA 객체를 변경해야했습니다. 다음 명령을 사용하여이를 달성했습니다.

db.open();          
db.delete(DATA[pos]);   
DATA=db.getdata(); 
DATA_NAME=db.getname(); 
DATA_AGE=db.getage(); 
DATA_FHR=db.getfhr();             
db.close(); 
1

..

+0

누누 @ ... 데이터베이스에서 모든 데이터를 얻을 다시 결합해야하는 행을 삭제 한 후, 당신은 어떻게 그렇게 말해 줄 수 .. 난 당신이 게시 할 경우 – Khushboo

+0

을 안드로이드 아주 새로운 오전 당신의 어댑터, 내가 더 도울 수있다 .. – Nermeen

+0

나는 어댑터를 게시했다 .. – Khushboo

1

: 여기

내가 사용하는 어댑터입니다 어댑터에서 데이터를 가져온 다음 your_adapter.notifyDataSetChanged() 메소드를 사용하십시오. 그건 나를 위해 일했다 ...

관련 문제