2015-02-01 1 views
0

나는 listview에 4 개의 텍스트 뷰와 버튼이 있습니다. 사용자가 단추를 클릭하면이 네 가지 textviews 값을 가져 와서 데이터베이스에 전달하려고합니다. 선택한 항목의 데이터를 sqlite에 저장하는 방법을 혼동합니다.버튼에서 listview 항목을 가져 오는 방법 sqlite를 클릭하여 저장

public class PlannningListViewAdapter extends BaseAdapter{ 

    Context context; 
    public ArrayList<Planning> planArraylist; 
    private static LayoutInflater inflater = null; 
    public Activity planActivity; 

    public PlannningListViewAdapter(Context context, 
      ArrayList<Planning> planArraylist) { 
     this.context = context; 
     this.planArraylist = planArraylist; 
     inflater = (LayoutInflater) context 
       .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

    } 

    @Override 
    public int getCount() { 
     return planArraylist.size(); 
    } 

    @Override 
    public Object getItem(int arg0) { 
     return arg0; 
    } 

    @Override 
    public long getItemId(int arg0) { 
     return arg0; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 

     if (convertView == null) { 
      convertView = inflater.inflate(R.layout.single_lv_item, null); 
     } 

     Planning p = planArraylist.get(position); 

     TextView tvDocCode = (TextView) convertView.findViewById(R.id.Plan_no); 
     TextView tvDocName = (TextView) convertView.findViewById(R.id.doc_name); 
     TextView tvmon = (TextView) convertView.findViewById(R.id.mon); 
     TextView tvAdr = (TextView) convertView.findViewById(R.id.adr); 
     Button btn_save =(Button)convertView.findViewById(R.id.button1); 
     btn_save.setOnClickListener(ButtonClickListener); 


     tvDocCode.setText(p.getDocCode()); 
     tvDocName.setText(p.getDocName()); 
     tvmon.setText(p.getTerrCode()); 
     tvAdr.setText(p.getAdr()); 
     return convertView; 
    } 
    private OnClickListener ButtonClickListener = new OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      final int position = mListView.getPositionForView((View) v.getParent()); 
      // Log.v(TAG, "item clicked, row %d", position); 
     } 
    }; 

} 
+0

직면 한 문제는 무엇입니까? DB에 데이터를 저장하려고하는 코드를 볼 수 없습니다. – Rohit5k2

답변

2

당신은 버튼을 setTag()getTag() 방법을 사용할 수 있습니다.

아래의 코드를보고하십시오 :

@Override 
public Planning getItem(int arg0) { 
    return planArraylist.get(arg0); 
} 

업데이트 당신의 getView 방법 :

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 

    ... 

    Button btn_save =(Button)convertView.findViewById(R.id.button1); 
    btn_save.setTag(position); 

    ... 
} 


private OnClickListener ButtonClickListener = new OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     final int position = (int)v.getTag(); 
     Planning planning = getItem(position); 
     yourDatabaseHelper. getRuntimeExceptionDao(Planning.class).createOrUpdate(planning); 
    } 
}; 

한 가지 더

는 당신의 getItem 방법을 변경해야합니다. ViewHolder을 구현해야합니다.이 패턴에 대해 읽어보십시오. 가장 좋은 해결책은 RecyclerView입니다. 위치는 이미 RecyclerView.ViewHolder에 구현되어 있습니다.

+0

정말 고마워. 어떻게하면 데이터베이스에 값을 전달할 수 있는지 보여주십시오. – Andrain

+0

DB를 작성하거나 DatabaseHelper에 쓰기 위해 라이브러리를 사용합니까? –

+0

나는 databasehelper를 사용하고 있으며 삽입 방법을 알고 있지만 위치를 사용하여 텍스트 값을 가져 오는 방법을 알지 못합니다. – Andrain

관련 문제