我的句柄 RadioGrup 有问题。应用程序从 OCR 中获取字符串,该字符串被剪切并扔到带有 4 个 RadioButtons 的列表视图列表上的适配器中,并且它已经在运行。 http://dl.dropbox.com/u/158361/screenshot-1336249818620.png
如屏幕截图所示,我根据按下的单选按钮将列表中的项目返回到 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;
}
}