How to get values from listview android?

南笙酒味 提交于 2019-12-12 06:02:18

问题


I am new in android.I am fetching data from mysql and showing it in listview.things are working fine but now i want to pass the value to intent when user click on listview(Row).I have implemented setOnItemClickListener.but the list view is dynamic so i am not getting how to get values and pass it to the intent.

Thanks in advance

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

}

回答1:


Inside your listview onItemClickListener

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

To getdata in second activity at onCreate method

String data;
Intent in=getIntent();

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



回答2:


you can set text from view list.setOnItemClickListener(new AdapterView.OnItemClickListener() {

            @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);
            }

        });



回答3:


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);
    }

});



回答4:


you can use bundle to pass you're data from intent.

   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);
            }

        });

and you can get it in your other activity by doing.

 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);
}

with this approach you don't have to hit the database again to retrieve data and you're one query is saved.

similarly you can send just you're 'id' also if you want.

but if you just want to pass 'id' then @Nas method would be more sorted and easy.



来源:https://stackoverflow.com/questions/34018463/how-to-get-values-from-listview-android

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!