Android:如何从String变量或对象中检索值

时间:2011-12-29 04:51:04

标签: android

我的所有学生的数据都是变量,即名字,姓氏,身份证。我从列表视图中检索到了。现在我想从s变量中检索数据到单个字符串变量,比如,我想将第一个名称存储在一个字符串中,将姓氏存储在另一个字符串中。就像我在下面做的那样。但它不起作用。

我试图迭代但是它给出错误..任何人都建议我如何从s变量中检索值。

public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.thrd);
     Log.i("INFO","ALL DETAILS");
     mydb=new MyDataBase(four.this);
     mydb.openDB();
     lv = (ListView)findViewById(R.id.listView1);  
     save = (Button) findViewById(R.id.button2);

     save.setOnClickListener(new OnClickListener(){
         public void onClick(View arg0) {
             long[] v=  lv.getCheckedItemIds();
             String s1=v.toString();
             int h =lv.getCount();
             for(int i=0;i<lv.getCount();i++) {
                 Object p2  =   lv.getItemAtPosition(i);
                 String s=(String) p2.toString();
                 List<? extends Map<String, ?>> s4=(List<? extends Map<String, ?>>) p2;
                 SimpleAdapter mSchedule1 = new SimpleAdapter(four.this, s4, R.layout.col1,
                         new String[] {"clss","sec","_Sid","FName", "LName"}, new int[] {R.id.editText1, R.id.editText2,R.id.editText3,R.id.editText4,R.id.editText5});
                 lv1.setAdapter(mSchedule1);
                 EditText cls=(EditText)findViewById(R.id.editText1);
                 EditText  sec=(EditText)findViewById(R.id.editText2);
                 EditText  sid=(EditText)findViewById(R.id.editText3);
                 EditText  fname=(EditText)findViewById(R.id.editText4);
                 EditText  lanme=(EditText)findViewById(R.id.editText5);

                 final  String cl=cls.getText().toString();
                 final  String sec1=sec.getText().toString();
                 final  String sid1=sid.getText().toString();
                 final  String fn=fname.getText().toString();
                 final String ln=lanme.getText().toString();
                 final String p="present";

                 Toast.makeText(four.this, sec1, Toast.LENGTH_LONG).show();
             }
         }
     });
     showall=(Button)findViewById(R.id.button1);
     showall.setOnClickListener(new OnClickListener() {
         public void onClick(View v) {
             // TODO Auto-generated method stub
             ArrayList<HashMap<String,String>> p2 = mydb.getAllSDetails();
             SimpleAdapter mSchedule = new SimpleAdapter(four.this, p2, R.layout.column,
                     new String[] {"_Sid","FName", "LName"}, new int[] {R.id.txtfname, R.id.txtlname,R.id.txtage});
             lv.setAdapter(mSchedule);
             lv.setOnItemClickListener(select);
             // int h=   lv.getCount();
         }
     });
}

public OnItemClickListener select=new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {
        int idd[] = mydb.gettingId();
        str = idd[position];
    }
};

我的错误日志

12-29 16:38:51.849:E / AndroidRuntime(561):致命异常:主要 12-29 16:38:51.849:E / AndroidRuntime(561):java.lang.ClassCastException:java.util.HashMap 12-29 16:38:51.849:E / AndroidRuntime(561):at com.android.four $ 2.onClick(four.java:85) 12-29 16:38:51.849:E / AndroidRuntime(561):在android.view.View.performClick(View.java:2408) 12-29 16:38:51.849:E / AndroidRuntime(561):在android.view.View $ PerformClick.run(View.java:8816) 12-29 16:38:51.849:E / AndroidRuntime(561):在android.os.Handler.handleCallback(Handler.java:587) 12-29 16:38:51.849:E / AndroidRuntime(561):在android.os.Handler.dispatchMessage(Handler.java:92) 12-29 16:38:51.849:E / AndroidRuntime(561):在android.os.Looper.loop(Looper.java:123) 12-29 16:38:51.849:E / AndroidRuntime(561):在android.app.ActivityThread.main(ActivityThread.java:4627) 12-29 16:38:51.849:E / AndroidRuntime(561):at java.lang.reflect.Method.invokeNative(Native Method) 12-29 16:38:51.849:E / AndroidRuntime(561):at java.lang.reflect.Method.invoke(Method.java:521) 12-29 16:38:51.849:E / AndroidRuntime(561):at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:868) 12-29 16:38:51.849:E / AndroidRuntime(561):at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 12-29 16:38:51.849:E / AndroidRuntime(561):at dalvik.system.NativeStart.main(Native Method)

2 个答案:

答案 0 :(得分:0)

由于问题还不清楚,不知道我的回答是否会对你有所帮助,因为我不确定你的要求是什么。如果您正在讨论将String分成几部分,那么您可以使用String的{​​{1}}方法。参数可以是随机分隔符,例如逗号。以下代码将使用逗号分隔的单个split(String regex)生成String数组:

String

很抱歉,如果这不是你要求的,但希望这会有所帮助。

答案 1 :(得分:0)

(评论作为格式化的答案。)

问题可能是两个地方之一:

ArrayList<HashMap<String,String>> p2 = mydb.getAllSDetails();
SimpleAdapter mSchedule = new SimpleAdapter(four.this, p2, R.layout.column,
        new String[] {"_Sid","FName", "LName"}, new int[] {R.id.txtfname,
                      R.id.txtlname,R.id.txtage});

或在这里:

Object p2 = lv.getItemAtPosition(i);
String s = (String) p2.toString();
List<? extends Map<String, ?>> s4 = (List<? extends Map<String, ?>>) p2;

HashMap的明确引用让我怀疑前者,但我们无从知晓:你仍然没有提供完整的信息。日志行:

E/AndroidRuntime(561): at com.android.four$2.onClick(four.java:85) 12-29 16:38:51.849: 

只是有所帮助,因为我们不知道four.java是什么,或者第85行是什么 - 只有你这样做。