2015-11-17 46 views
0

我在Activity A中有一个listView,如下所示。将ListView值传递给EditText

enter image description here

当单击第一个列表,它应该在editText显示3。但它显示5实际上是从最后一个列表中获取。

enter image description here

活动A

ArrayAdapter<String> adapter; 
    ArrayList<String> m_listItems = new ArrayList<String>(); 
    int mClickedPosition; 
    adapter=new ArrayAdapter<String (getActivity(),R.layout.claims,R.id.textView1,m_listItems); 
listV = (ListView) claims.findViewById(R.id.listView1); 

      listV.setOnItemClickListener(new 
      AdapterView.OnItemClickListener() { // when list is pressed, intent to B 
      public void onItemClick(AdapterView<?> listView, View view, int position, long id) { 
          mClickedPosition = position; 
          if (name.equals("Project")) { 
           Intent intent = new Intent(Claims1.this.getActivity(), B.class); 
           intent.putExtra("bitmap", true); 
           intent.putExtra("name", name); 
           intent.putExtra("result", result); 
           startActivityForResult(intent, 0); 
          } 


      @Override 
      public void onActivityResult(int requestCode, int resultCode, Intent data) { 
       switch (requestCode) { // receive from B 
        case 0: 
         result = data.getStringExtra("text"); 
         name = data.getStringExtra("a"); 
         description = data.getStringExtra("c"); 
         as = Long.parseLong(result); 
         Log.d("FIRST", "result:" + result); 
         Text = " " + name + "         " + "RM" + result + ""; 
         // m_listItems.clear(); 
         if (mClickedPosition == -1) { 
          m_listItems.add(Text); 

         } else { 
          m_listItems.set(mClickedPosition, Text); 

         } 
         adapter.notifyDataSetChanged(); 
         listV.setAdapter(adapter); 
         break; 
         } 

活动B

if(getIntent().getExtras()!=null) { //if has value pass from A 
      final String Amount = getIntent().getExtras().getString("result"); 
      final String description1 = getIntent().getExtras().getString("description"); 
      txt1.setText(description1); 
      txt.setText(Amount); 
     } 

       b.setOnClickListener(new View.OnClickListener() { // return to A 
        public void onClick(View arg0) { 
         Intent returnIntent = new Intent(); 
         a = "Project"; 
         text = txt.getText().toString(); // amount 
         returnIntent.putExtra("text", text); 
         returnIntent.putExtra("a", a); 
         returnIntent.putExtra("c", c); // receive from Activity C 
         setResult(Activity.RESULT_OK, returnIntent); 
         finish(); 
        } 
       }); 
         viewImage.setImageBitmap(Global.img); // receive from C 
        } 
+1

评论不适用于扩展讨论;这个对话已经[转移到聊天](http://chat.stackoverflow.com/rooms/95347/discussion-on-question-by-tony-pass-listview-value-to-edittext)。 –

回答

2

使用您ArrayList到的ListView像位置提取字符串..

listV.setOnItemClickListener(new 
     AdapterView.OnItemClickListener() { 
     public void onItemClick(AdapterView<?> listView, View view, int position, long id) { 
      mClickedPosition = position; 

      String result = m_listItems.get(position);  //add this 
      result = result.substring(2); 

      if (name.equals("Project")) { 
       Intent intent = new Intent(Claims1.this.getActivity(), B.class); 
       // your intent stuf 
       intent.putExtra("result", result); 

      } 
+0

伙计..结果字符串是一个简单的包含名称+“”+结果“它需要先解析..不要忘记他需要在'editText'中显示'3'而不是'Project RM5' – Minato

+0

@Minato你是对的。 – Tony

+0

@Mohit,显示的值已经正确。如果可以删除'name',那就完美了:) – Tony