简体   繁体   English

在ListView Android中阅读项目

[英]Read item in ListView Android

I want take the information of a list view made with a hasmap and for this i have made this code: 我想获取使用hasmap创建的列表视图的信息,为此,我编写了以下代码:

public class MainActivity extends Activity {

ListView rdv;
HashMap<String, String> map;
ArrayList<HashMap<String, String>> rdvous = new ArrayList<>();
String URL;

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


    URL = "http://172.16.32.101/?mot=listerrdv&id=5";

    rdv = (ListView)findViewById(R.id.listRDV);
    new HttpAsyncTask().execute(URL);

    rdv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        @SuppressWarnings("unchecked")
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            Toast.makeText(getBaseContext(),map.get("titre"),Toast.LENGTH_LONG).show();
        }
    });
}

. . .

private class HttpAsyncTask extends AsyncTask<String, Void, String> {
    @Override
    protected String doInBackground(String... urls) {

        return GET(urls[0]);
    }
    // onPostExecute displays the results of the AsyncTask.
    @Override
    protected void onPostExecute(String result) {
        try {
            JSONArray json = new JSONArray(result);
            String str = "";

            for(int i = 0 ; i<json.length() ; i++) {
                map = new HashMap<String, String>();
                str ="";
                str += "RDV " + (i+1) + "\n";
                str += "jour: " + json.getJSONObject(i).getString("jour") + "\n";
                str += "heure: " + json.getJSONObject(i).getString("heure") + "\n";
                str += "perso: " + json.getJSONObject(i).getString("perso") + "\n";
                str += "acte: " + json.getJSONObject(i).getString("acte") + "\n";
                map.put("titre",str);
                str = "";
                str += json.getJSONObject(i).getString("idrdv");
                map.put("description",str);
                rdvous.add(map);
            }
            SimpleAdapter adapt = new SimpleAdapter (getBaseContext(), rdvous, R.layout.list_rdv,
                    new String[] {"titre", "description"}, new int[] {R.id.titre, R.id.description});


            rdv.setAdapter(adapt);


        } catch (JSONException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

I receive data and listview is Ok but when I click on an item, i only receive the last item... 我收到数据并且listview正常,但是当我单击一个项目时,我只收到最后一个项目...

Can you help me? 你能帮助我吗?

Rami found this solution: 拉米发现了以下解决方案:

Toast.makeText(getBaseContext(), rdvous.get(position).get("titre"),Toast.LENGTH_LONG).show();

And it's work 这是工作

Thank Rami ;-) 感谢Rami ;-)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM