2011-12-29 73 views
0

我的所有学生数据都是s变量,即名,姓,id。我已经从列表视图中检索。现在我想从s变量中检索数据到单个字符串变量,比如,我想在一个字符串中存储名字,在另一个字符串中存储姓氏。像我在下面做的那样。但它不工作。Android:如何从字符串变量或对象检索值

我试图重复,但也给它的任何error..can一个建议我我如何可以检索从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):在com.android.four $ 2.onClick(four.java:85) 12-29 16 :38:51.849:E/AndroidRuntime(561):at android.view.View.performClick(View.java:2408) 12-29 16:38:51.849:E/AndroidRuntime(561):at android.view.View $ PerformClick.run(View.java:8816) 12-29 16:38:51.849:E/AndroidRuntime(561):at 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):at android.app.ActivityThread.main (ActivityThread.java:4627) 12-29 16:38:51.849:E/AndroidRuntime(561):在java.lang.reflect.Method.invokeNative(本机方法) 12-29 16:38:51.849:E/AndroidRuntime(561):12-29 16日java.lang.reflect.Method.invoke(Method.java:521):38:51.849:E/AndroidRuntime(561):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:868) 12-29 16:38:51.849:E/AndroidRuntime(561):在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)

+0

是自定义适配器中的edittext ??并且按钮“save”也是?你应该把整个代码放在pastebin上。 – 2011-12-29 05:00:30

+1

“它给错误了?”也许分享这个错误是有价值的。另外,'toString'返回一个字符串,不需要转换。 – 2011-12-29 05:03:08

+0

@ mak_just4anything edittext在col1.xml file.button保存在thrs.xml文件,我在R.layout.thrd在oncreate()。我编辑我的代码。 – 2011-12-29 10:29:12

回答

0

由于问题很不清楚,不知道我的答案是否会有帮助因为我不确定你要求的是什么。如果您正在讨论将String分成几部分 - 您可以使用Stringsplit(String regex)方法。该参数可以是一个随机分隔符,例如逗号。下面的代码将使String阵列从一个单一的String用逗号分隔的项目:如果

String[] sArray = string.split(","); 

对不起这不是你问什么,但希望这有助于。

+0

thanks for suggestion.my变量s包含{Fname =“fdg”,_ id =“9”}。现在我想将这些值存储在单个字符串中,如String f =“fdg”,int i = 9.i试过使用String .split(“,”)但它的工作。 – 2011-12-29 11:20:03

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是 - 只有你。

+0

我会看看这个。 – 2011-12-30 03:08:14