2015-12-01 73 views
0

我是新的android.I從MySQL獲取數據,並顯示它在listview.things工作正常,但現在我想傳遞值意圖當用戶點擊listview(行)。我已經實現了setOnItemClickListener.but列表視圖是動態的,所以我不知道如何獲取值並將其傳遞給意圖。如何從listview android獲取值?

在此先感謝

public class AdminNotice extends Activity { 

    private String[] navMenuTitles; 
    private TypedArray navMenuIcons; 
    private EditText editTextName; 
    SharedPreferences sp; 
    private String jsonResult; 
    private ListView listView; 
    private Button b; 
    EditText etname, et; 
    TextView tv; 
    String myJSON; 
    private static final String TAG = "MainActivity.java"; 
    private static final String TAG_NAME = "notice"; 
    private static final String TAG_DATE = "ndate"; 
    ProgressBar progressBar; 
    Date date; 
    JSONArray peoples = null; 

    ArrayList<HashMap<String, String>> personList; 

    ListView list; 



    public static final String USER_NAME = "USERNAME"; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.noticelist); 
     progressBar = (ProgressBar) findViewById(R.id.progressbar); 


     //SharedPreferences myprefs= getSharedPreferences("user", MODE_WORLD_READABLE); 
     // String session_id= myprefs.getString("session_id", null); 


     //TextView textView = (TextView) findViewById(R.id.fname); 

     //textView.setText("Welcome "+session_id); 





     navMenuTitles = getResources().getStringArray(R.array.nav_drawer_items); 

     navMenuIcons = getResources().obtainTypedArray(R.array.nav_drawer_icons); 
     // load icons from 
     // strings.xml 


     list = (ListView) findViewById(R.id.listView); 
     personList = new ArrayList<HashMap<String,String>>(); 

     getData(); 




    } 



    //send messages stop 

    //get json data start 
    protected void showList(){ 
     try { 
      JSONArray peoples = new JSONArray(myJSON); 


      for(int i=0;i<peoples.length();i++){ 
       JSONObject c = peoples.getJSONObject(i); 
       String name=null, date=null; 

       /*if(c==null){ 
        ProgressDialog progress = new ProgressDialog(this); 
        progress.setTitle("Loading"); 
        progress.setMessage("Wait while loading..."); 
        progress.show(); 
       }*/ 



       if(c.has("notice")) 
       if(c.has("ndate")) 




       progressBar.setVisibility(View.GONE); 
       name = c.getString("notice"); 
       date = c.getString("ndate"); 




       HashMap<String,String> persons = new HashMap<String,String>(); 


       persons.put(TAG_NAME,name); 
       persons.put(TAG_DATE,date); 
       personList.add(persons); 
      } 



      ListAdapter adapter = new SimpleAdapter(
        AdminNotice.this, personList, R.layout.list_item1, 
        new String[]{TAG_NAME,TAG_DATE}, 
        new int[]{R.id.name, R.id.date} 
      ); 

      list.setAdapter(adapter); 

      list.setOnItemClickListener(new AdapterView.OnItemClickListener() { 

       @Override 
       public void onItemClick(AdapterView<?> adapterView, View view, int position, 
             long id) { 





         /*ModelClass obj = getItem(position); 
         String name = obj.getName();*/ 


        // Simple Toast to show the position Selected 
        Log.d("SELECT_POSITION", "Position For this List Item = " + position); 
       } 

      }); 

      /* list.setOnItemClickListener(new AdapterView.OnItemClickListener() { 

       public void onItemClick(AdapterView parent, View view, int position, long id) { 


        Toast.makeText(getApplicationContext(), ((TextView) view).getText(), Toast.LENGTH_SHORT).show(); 

       } 

      });*/ 





     } catch (JSONException e) { 
      Log.i("tagconvertstr", "["+myJSON+"]"); 
     } 
    } 





    public void getData(){ 
     class GetDataJSON extends AsyncTask<String, Void, String>{ 


      @Override 
      protected String doInBackground(String... params) { 

       SharedPreferences myprefs= getSharedPreferences("user", MODE_WORLD_READABLE); 
       String session_id= myprefs.getString("session_id", null); 

       InputStream inputStream = null; 
       String result = null; 
       try { 

        String postReceiverUrl = "http://notice.php"; 

        // HttpClient 
        HttpClient httpClient = new DefaultHttpClient(); 

        // post header 
        HttpPost httpPost = new HttpPost(postReceiverUrl); 

        // add your data 
        List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2); 
        nameValuePairs.add(new BasicNameValuePair("username", session_id)); 

        httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 
        HttpResponse response = httpClient.execute(httpPost); 
        HttpEntity resEntity = response.getEntity(); 

        inputStream = resEntity.getContent(); 
        // json is UTF-8 by default 
        BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"), 8); 
        StringBuilder sb = new StringBuilder(); 

        String line = null; 
        while ((line = reader.readLine()) != null) 
        { 
         sb.append(line + "\n"); 
        } 
        result = sb.toString(); 
       } catch (Exception e) { 
        Log.i("tagconvertstr", "["+result+"]"); 
        System.out.println(e); 
       } 
       finally { 
        try{if(inputStream != null)inputStream.close();}catch(Exception squish){} 
       } 
       return result; 
      } 

      @Override 
      protected void onPostExecute(String result){ 
       myJSON = result; 
       showList(); 
      } 
     } 
     GetDataJSON g = new GetDataJSON(); 
     g.execute(); 
    } 
    //get json data stop 

} 
+0

可能重複[在ListView中獲取位置](http://stackoverflow.com/questions/9093190/get-position-in-listview) – Mohit

回答

0

內,您的列表視圖onItemClickListener

Intent intent=new Intent(currentyactivty.this,secondactiviy.class); 
intent.putExtra("TAG_NAME", personList.get(position).get(TAG_NAME)); 
startActivity(intent); 

要在第二個活動在onCreate方法GETDATA

String data; 
Intent in=getIntent(); 

if(in!=null && in.hasExtra("TAG_NAME")){ 
    data=in.getStringArrayExtra("TAG_NAME"); 
} 
+0

如何將它傳遞給intent? –

+0

謝謝:)它幫助了我 –

0

你可以設置從視圖 list.setOnItemClickListener文本(新的AdapterView.OnItemClickListen ER(){

  @Override 
      public void onItemClick(AdapterView<?> adapterView, View view, int position, 
            long id) { 


      Intent intent=new Intent(currentyactivty.this,secondactiviy.class); 
       intent.putExtra("NAME", personList.get(position).get(TAG_NAME)); 
       startActivity(intent); 



       // Simple Toast to show the position Selected 
       Log.d("SELECT_POSITION", "Position For this List Item = " + position); 
      } 

     }); 
0
list.setOnItemClickListener(new AdapterView.OnItemClickListener() { 

    @Override 
    public void onItemClick(AdapterView<?> adapterView, View view, int position, 
          long id) { 





      /*ModelClass obj = getItem(position); 
      String name = obj.getName();*/ 

     String personName = personList.get(position).get(TAG_NAME); 
     Intent i = new Intent(AdminNotice.this, YourNextActivity.class); 
     i.putExtra("person_name", personName); 
     startActivity(i); 
     // Simple Toast to show the position Selected 
     Log.d("SELECT_POSITION", "Position For this List Item = " + position); 
    } 

}); 
0

您可以使用捆綁來傳遞你從意圖數據。

list.setOnItemClickListener(new AdapterView.OnItemClickListener() { 

      @Override 
      public void onItemClick(AdapterView<?> adapterView, View view, int position, 
            long id) { 





        ModelClass obj = getItem(position); 
        String name = obj.getName(); 
        String date = obj.getDate(); 
        Bundle bundle = new Bundle(); 
        bundle.putString("name", name); 
        bundle.putString("date", date); 
        Intent in = new Intent(currentActivity.this,destinationActivity.class); 
        in.putExtras(b); 
        startActivity(in); 



       // Simple Toast to show the position Selected 
       Log.d("SELECT_POSITION", "Position For this List Item = " + position); 
      } 

     }); 

通過這樣做,你可以在你的其他活動中獲得它。

protected void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_second); 
    Intent in = getIntent(); 
    Bundle b = in.getExtras(); 
    String name = b.getString("name"); 
    String date = b.getString("date); 
} 

用這種方法,你不必再訪問數據庫檢索數據,你是一個查詢被保存。

同樣,如果你願意,你可以發送只是你的'身份證'。

但是如果你只是想傳遞'id',那麼@Nas方法會更加排序和簡單。