2013-06-21 46 views
0

我已經做了一個簡單的android程序爲listview學習的目的,因爲我採取了alistview與文本和image.now我想要的是,當我點擊列表中的項目,然後它應該來與特定的圖像和text..I下一個活動都impelmented如下那不是工作,請幫我的一樣:列表項意圖不工作在Android

主要

package com.example.androidlistview; 

import java.util.ArrayList; 
import java.util.HashMap; 
import java.util.List; 

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.AdapterView.OnItemClickListener; 
import android.widget.ListView; 
import android.widget.SimpleAdapter; 

public class MainActivity extends Activity { 
    String[] smily = new String[] {"Angry","Basic","Cool","Cry","Err","Evil","Kiss","Laugh","Shame" 
       ,"Toungh","Wink","Wonder"}; 

     int[] pic =new int[]{ 
       R.drawable.ic_action_emo_angry, 
       R.drawable.ic_action_emo_basic, 
       R.drawable.ic_action_emo_cool, 
       R.drawable.ic_action_emo_cry, 
       R.drawable.ic_action_emo_err, 
       R.drawable.ic_action_emo_evil, 
       R.drawable.ic_action_emo_kiss, 
       R.drawable.ic_action_emo_laugh, 
       R.drawable.ic_action_emo_shame, 
       R.drawable.ic_action_emo_tongue, 
       R.drawable.ic_action_emo_wink, 
       R.drawable.ic_action_emo_wonder 

     }; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     List<HashMap<String,String>> aList = new ArrayList<HashMap<String,String>>(); 

      for(int i=0;i<10;i++){ 
       HashMap<String, String> hm = new HashMap<String,String>(); 
       hm.put("sml", " " + smily[i]); 

       hm.put("pic", Integer.toString(pic[i])); 
       aList.add(hm); 
      } 
      String[] from = { "pic","sml" }; 


      int[] to = { R.id.smily,R.id.txt}; 


      SimpleAdapter adapter = new SimpleAdapter(getBaseContext(), aList, R.layout.list_layout, from, to); 

      final ListView listView = (ListView) findViewById(R.id.listView1); 

      listView.setAdapter(adapter); 
      listView.setOnItemClickListener(new OnItemClickListener() { 

       @Override 
       public void onItemClick(AdapterView<?> arg0, View arg1, 
         int arg2, long arg3) { 
        // TODO Auto-generated method stub 
        Intent intent = new Intent(MainActivity.this,Descripsn.class); 
         String smiley=(String)listView.getSelectedItem(); 
         Bundle b =new Bundle(); 
         intent.putExtra("smily", smiley); 
         intent.putExtra("image", smily[arg2]); 
         startActivity(intent); 
       } 

      }); 


    } 



} 

desc.java

package com.example.androidlistview; 


import android.os.Bundle; 
import android.app.Activity; 
import android.content.Intent; 
import android.view.Menu; 
import android.widget.ImageView; 
import android.widget.TextView; 

public class Descripsn extends Activity { 
TextView tv; 
ImageView im; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_descripsn); 
     tv=(TextView)findViewById(R.id.textView1); 
     im=(ImageView)findViewById(R.id.imagedesc); 

     Intent i =getIntent(); 
     Bundle b=getIntent().getExtras(); 
     String smily = b.getString("smiley"); 
     int img = b.getInt(smily); 
     tv.setText(smily); 
    } 


} 

登錄

06-21 09:44:38.263: I/Choreographer(4029): Skipped 53 frames! The application may be doing too much work on its main thread. 
06-21 09:44:39.523: I/Choreographer(4029): Skipped 58 frames! The application may be doing too much work on its main thread. 
06-21 09:44:48.243: I/Choreographer(4029): Skipped 74 frames! The application may be doing too much work on its main thread. 
06-21 09:44:48.633: I/Choreographer(4029): Skipped 200 frames! The application may be doing too much work on its main thread. 
06-21 09:44:48.853: I/Choreographer(4029): Skipped 46 frames! The application may be doing too much work on its main thread. 
06-21 09:44:49.685: I/Choreographer(4029): Skipped 43 frames! The application may be doing too much work on its main thread. 
06-21 09:44:54.079: I/Choreographer(4029): Skipped 44 frames! The application may be doing too much work on its main thread. 
06-21 09:44:54.733: I/Choreographer(4029): Skipped 46 frames! The application may be doing too much work on its main thread. 
+0

不工作手段不打算在獲得下一個活動的文本 –

+0

是的......文字和圖片也沒有得到在接下來的活動..! – jigar

回答

1

try thi小號

@Override 
      public void onItemClick(AdapterView<?> arg0, View arg1, 
        int arg2, long arg3) { 

       Intent intent = new Intent(MainActivity.this,Descripsn.class); 

        intent.putExtra("smily", smily[arg2].toString()); 
        intent.putExtra("image", pic[arg2]); 
        intent.putExtra("pos", arg2); 
        startActivity(intent); 
      } 

,並得到其他活動

Bundle b=getIntent().getExtras(); 
    String smily = b.getString("smily"); 
    int img = b.getInt("image"); 
    int imgpos = b.getInt("pos"); 
0

裏面你Descripsn類,你必須使用getExtras相同標識符..

嘗試這樣的..

Intent i =getIntent(); 
     Bundle b=getIntent().getExtras(); 
     String smily = b.getString("smily"); 
     String img = b.getString("image"); 
     tv.setText(smily); 

編輯: - 你會得到你想要的文本通過..但對於圖像,以及您可以發送選定列表中的位置作爲標識符你喜歡這個未來的意圖..

@Override 
       public void onItemClick(AdapterView<?> arg0, View arg1, 
         int arg2, long arg3) { 
        // TODO Auto-generated method stub 
        Intent intent = new Intent(MainActivity.this,Descripsn.class); 
         String smiley=(String)listView.getSelectedItem(); 
         Bundle b =new Bundle(); 
         intent.putExtra("smily", smiley); 
         intent.putExtra("image", smily[arg2]); 
         intent.putExtra("pos", arg2); 
         startActivity(intent); 
       } 

,然後得到這樣的演員,,

Intent i =getIntent(); 
      Bundle b=getIntent().getExtras(); 
      String smily = b.getString("smily"); 
      String img = b.getString("image"); 
      int imgpos = b.getInt("pos"); 
      tv.setText(smily); 
+0

更改爲你所告訴...仍然沒有工作.. :( – jigar

+0

編輯後..如果你仍然面臨的概率,然後嘗試添加'日誌'打印什麼值你得到getExtras .. – CRUSADER

+0

仍然不工作兄弟, ,,! – jigar

0
String smily = b.getString("smiley"); 

錯))

試試這個:

String smily = b.getString("smily"); 
0

main.java
包com.example.androidlistview;

import java.util.ArrayList; 
import java.util.HashMap; 
import java.util.List; 

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.AdapterView.OnItemClickListener; 
import android.widget.ListView; 
import android.widget.SimpleAdapter; 
import android.widget.TextView; 

public class MainActivity extends Activity { 
    String[] smily = new String[] {"Angry","Basic","Cool","Cry","Err","Evil","Kiss","Laugh","Shame" 
       ,"Toungh","Wink","Wonder"}; 

     public int[] pic =new int[]{ 
       R.drawable.ic_action_emo_angry, 
       R.drawable.ic_action_emo_basic, 
       R.drawable.ic_action_emo_cool, 
       R.drawable.ic_action_emo_cry, 
       R.drawable.ic_action_emo_err, 
       R.drawable.ic_action_emo_evil, 
       R.drawable.ic_action_emo_kiss, 
       R.drawable.ic_action_emo_laugh, 
       R.drawable.ic_action_emo_shame, 
       R.drawable.ic_action_emo_tongue, 
       R.drawable.ic_action_emo_wink, 
       R.drawable.ic_action_emo_wonder 

     }; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     List<HashMap<String,String>> aList = new ArrayList<HashMap<String,String>>(); 

      for(int i=0;i<10;i++){ 
       HashMap<String, String> hm = new HashMap<String,String>(); 
       hm.put("sml", " " + smily[i]); 

       hm.put("pic", Integer.toString(pic[i])); 
       aList.add(hm); 
      } 
      String[] from = { "pic","sml" }; 


      int[] to = { R.id.smily,R.id.txt}; 


      SimpleAdapter adapter = new SimpleAdapter(getBaseContext(), aList, R.layout.list_layout, from, to); 

      final ListView listView = (ListView) findViewById(R.id.listView1); 

      listView.setAdapter(adapter); 
      listView.setOnItemClickListener(new OnItemClickListener() { 

       @Override 
       public void onItemClick(AdapterView<?> arg0, View arg1, 
         int arg2, long arg3) { 
        // TODO Auto-generated method stub 
        Intent intent = new Intent(MainActivity.this,Descripsn.class); 
        Bundle b =new Bundle(); 
        intent.putExtra("smily", smily[arg2]); 
        intent.putExtra("image", pic[arg2]); 
        startActivity(intent); 
       } 

      }); 


    } 



} 

desc.jav

package com.example.androidlistview; 


import android.os.Bundle; 
import android.app.Activity; 
import android.content.Intent; 
import android.view.Menu; 
import android.widget.ImageView; 
import android.widget.TextView; 

public class Descripsn extends Activity { 
TextView tv; 
ImageView im; 
private MainActivity main = new MainActivity(); 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_descripsn); 
     tv=(TextView)findViewById(R.id.textView1); 
     im=(ImageView)findViewById(R.id.imagedesc); 

     Intent i =getIntent(); 
     Bundle b= getIntent().getExtras(); 
     String smily = b.getString("smily"); 
     int img = b.getInt("image"); 
     String imgpos = b.getString("pos"); 

     System.out.println("Image value"+img); 

     //System.out.println("======Posi::::::"+smily); 

     tv.setText(smily); 
     im.setBackgroundResource(img); 
    } 


}