2012-05-21 4 views
0

У меня проблема с ручкой RadioGrup. Приложение получает строку из OCR, которая вырезана и добавлена ​​в адаптер в списке listview с 4 RadioButtons, и она уже запущена. http://dl.dropbox.com/u/158361/screenshot-1336249818620.pngкак программировать RadioGroup в ListView на Android

Как показано на скриншоте, 4 EditText, на который я возвращаю элемент в списке, в соответствии с которым был наложен радиокутон. Как отправить строку после выбора raiobutton?

Мой код:

public class ocrResults extends Activity implements OnClickListener { 
public static final int CAPTURE_ACTIVITY_REQUEST_CODE = 1; 
public ListaAdapterResults listaAdapterRes; 
public ListView id_list_tokens;  
public String[] splittedArray; 
String tag = "Events"; 

public EditText etNazwa; 
public EditText etAdres; 
public EditText etGodziny; 
public EditText etTelefon; 
public RadioGroup radioGroup; 

private View.OnClickListener onSave=new View.OnClickListener() { 
    public void onClick(View v) { 
     RadioSelect rs = new RadioSelect(); 
     rs.setItem(etNazwa.getText().toString()); 
     rs.setItem(etAdres.getText().toString()); 
     rs.setItem(etGodziny.getText().toString()); 
     rs.setItem(etTelefon.getText().toString()); 

     radioGroup=(RadioGroup)findViewById(R.id.group); 

     switch (radioGroup.getCheckedRadioButtonId()) { 
     case R.id.rbName: 
      rs.setType("rbName"); 
      //etNazwa.setText(splittedArray[pos]); 
      break; 
     case R.id.rbAdres: 
      rs.setType("rbAdres"); 
      break; 
     case R.id.rbGodziny: 
      rs.setType("rbGodziny"); 
      break; 
     case R.id.rbTelefon: 
      rs.setType("rbTelefon"); 
      break; 
     } 
     etNazwa.setText(""); 
     etAdres.setText(""); 
     etGodziny.setText(""); 
     etTelefon.setText(""); 
     radioGroup.clearCheck(); 
     Log.d(tag," potwierdz"); 
    } 
}; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.ocrresultsactivity); 
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 

    id_list_tokens = (ListView)findViewById(R.id.id_list_tokens); 
    etNazwa =(EditText)findViewById(R.id.EtResNazwa); 
    etAdres =(EditText)findViewById(R.id.EtResAdres); 
    etGodziny=(EditText)findViewById(R.id.EtResGodziny); 
    etTelefon=(EditText)findViewById(R.id.EtResTelefon); 

    View btn_Zatw1 = findViewById(R.id.btnZatw1); 
    btn_Zatw1.setOnClickListener(onSave);//this 
    View btn_OCRmake1 = findViewById(R.id.btnOCRmake1); 
    btn_OCRmake1.setOnClickListener(this); 
    View btn_backtomain1 = findViewById(R.id.btnbacktomain1); 
    btn_backtomain1.setOnClickListener(this); 
    } 
    @Override 
    public void onClick(View v) { 
    switch (v.getId()){ 
    case R.id.btnOCRmake1: 
     Intent myIntent = new Intent(ocrResults.this, CaptureActivity.class); 
     startActivityForResult(myIntent, CAPTURE_ACTIVITY_REQUEST_CODE); 
     break; 
    case R.id.btnbacktomain1: 
     startActivity(new Intent(ocrResults.this, and4ph.class)); 
     finish(); 
     break; 
    } 
    } 
    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (resultCode == RESULT_OK) { 
     if (CAPTURE_ACTIVITY_REQUEST_CODE == requestCode) { 
      String response = data.getStringExtra(edu.sfsu.cs.orange.ocr.CaptureActivity.RESPONSE); 
      insertResponse(response); 
     } 
    } 
    } 
    private void insertResponse(String response) { 
    String strResult = response; 
    splittedArray = strResult.split(" "); //(strResult, ' '); 
    Context context = getApplicationContext(); 

    initListViewResp(); 
    } 
    void initListViewResp() {   //Inicjalizacja ListView 
    listaAdapterRes = new ListaAdapterResults(this, splittedArray); 
    id_list_tokens.setAdapter(listaAdapterRes); 

    //  if (mbutton[0] == true) { 
    //  mbutton[0]=holder.rb_Name; 
    //  } else { 
    //    // Get the ViewHolder back to get fast access to the ImageView. 
    //    holder = (ViewHolder) convertView.getTag(); 
    //    holder.dealImage.setBackgroundColor(Color.WHITE); 
    //    dealImage = holder.dealImage; 
    //   } 


    id_list_tokens.setOnItemClickListener(new OnItemClickListener() { 
     public void onItemClick(AdapterView<?> parent, View v, int pos, long id) { 
      Toast.makeText(getApplicationContext(), splittedArray[pos], Toast.LENGTH_SHORT).show(); 
     } 
    }); 
    //getCheckedRadioButtonId(); 
    updateListView(); 
} 
private void updateListView() { 
    listaAdapterRes.notifyDataSetChanged(); 
}  
    } 

И мой адаптер:

public class ListaAdapterResults extends ArrayAdapter<String> { 
    String tag = "Events"; 
    private Activity context; 
    private String[] splittedArray; 

    public ListaAdapterResults(Activity context, String[] splittedArray){ 
     super(context, R.layout.wiersz_tokenu, splittedArray); 
     this.context  = context; 
     this.splittedArray = splittedArray; 
    } 
    public long getItemId(int position) { 
     return position; 
    } 
    static class ViewHolder { 
     private TextView  tv_Token; 
     private RadioButton rb_Name; 
     private RadioButton rb_Adres; 
     private RadioButton rb_Godziny; 
     private RadioButton rb_Telefon; 
     private RadioGroup rgroup; 
    } 
    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     Log.d(tag," 3"); 
     View rowView = convertView; 
     ViewHolder holder= null; 
     RadioButton[] mbutton = null; 

     if(rowView == null) { 
      LayoutInflater inflator = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      rowView = inflator.inflate(R.layout.wiersz_tokenu, parent, false); 
      holder = new ViewHolder(); 
      holder.rgroup  = (RadioGroup) rowView.findViewById(R.id.group); 
      holder.tv_Token = (TextView) rowView.findViewById(R.id.tvToken); 

      holder.rb_Name = (RadioButton)rowView.findViewById(R.id.rbName); 
      holder.rb_Adres = (RadioButton)rowView.findViewById(R.id.rbAdres); 
      holder.rb_Godziny = (RadioButton)rowView.findViewById(R.id.rbGodziny); 
      holder.rb_Telefon = (RadioButton)rowView.findViewById(R.id.rbTelefon); 

      mbutton=new RadioButton[4]; 
      mbutton[0]=holder.rb_Name; 
      mbutton[1]=holder.rb_Adres; 
      mbutton[2]=holder.rb_Godziny; 
      mbutton[3]=holder.rb_Telefon; 

      for(int i=0; i<4; i++) { 
       mbutton[i]=new RadioButton(context); 
       //mbutton[l].setText("test"+l); 
       //holder.rgroup.addView(mbutton[i]); 
      } 

      holder.rgroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { 
       public void onCheckedChanged(RadioGroup mRadioGroup, int checkedId) { 

        for(int i=0; i<mRadioGroup.getChildCount(); i++) { 

         RadioButton rbtn = (RadioButton) mRadioGroup.getChildAt(i); 
         //int t=table.indexOfChild(table_row); //System.out.println(t); 

         int t = mRadioGroup.getId(); 
         System.out.println(t); 

         if(rbtn.getId() == checkedId) { 
          String text = rbtn.getText().toString(); 
          // do something with text 
          //etNazwa.setText(text); 

          RadioSelect rs = new RadioSelect(); 
//      rs.setItem(etNazwa.getText().toString()); 
//      rs.setItem(etAdres.getText().toString()); 
//      rs.setItem(etGodziny.getText().toString()); 
//      rs.setItem(etTelefon.getText().toString()); 
//      mRadioGroup=(RadioGroup)findViewById(R.id.radioGroupTypET); 

          switch (mRadioGroup.getCheckedRadioButtonId()) { 
          case R.id.rbName: 
           rs.setType("rbName"); 
            //String text = rbtn.getText().toString(); 
            //etNazwa.setText(text); 
           break; 
          case R.id.rbAdres: 
           rs.setType("rbAdres"); 
           break; 
          case R.id.rbGodziny: 
           rs.setType("rbGodziny"); 
           break; 
          case R.id.rbTelefon: 
           rs.setType("rbTelefon"); 
           break; 
          } 
          Log.d(text," radioButtonSelect"); 
          return; 
         } 
        } 
       } 
      }); 
      rowView.setTag(holder); 
      Log.d(tag,"me"); 
     } else { 
      holder = (ViewHolder) convertView.getTag(); 
//  mbutton = holder.rgroup; 
      Log.d(tag,"meeee"); 
     } 
     ViewHolder holder1 = (ViewHolder) rowView.getTag(); 
     holder1.tv_Token.setText(splittedArray[position]); 
     Log.d(tag," event7"); 

     holder.tv_Token.setText(splittedArray[position]); 
     holder.rb_Name.setTag(new Integer(position)); 
     holder.rb_Adres.setTag(new Integer(position)); 
     holder.rb_Godziny.setTag(new Integer(position)); 
     holder.rb_Telefon.setTag(new Integer(position)); 
//  public void onCheckedChanged(RadioGroup rgroup,int checkedId){ } 
     return rowView; 
    } 
} 

ответ

0

В вашем методе GetView в holder.rgroup.setOnCheckedChangeListener установленное значение для EditText. , например.

String text = rbtn.getText().toString(); 
    etNazwa.setText(text); 

Похоже, что этот код прокомментирован, но с неправильным параметром. У вас есть etNazwa.setText(response);, и он должен быть etNazwa.setText(text);

+0

Благодарим за ответ, но etNazwa.setText (текст); неправильно, потому что etNazwa это один из четырех EditText первого класса, который использует адаптер. И это etNazwa.setText (текст) не должно быть в коммутаторе? Я очистил код адаптера. – mst007

+0

Поместите свой класс адаптера в свой класс активности, и вы должны иметь возможность редактировать текст etNazwa. – vandzi

+0

Только адаптер или просто объединить эти два класса? Я пытаюсь объединить, но теперь у меня проблема с использованием этого адаптера. – mst007

 Смежные вопросы

  • Нет связанных вопросов^_^