Как установить onItemClick слушатель с этим - PullRequest
0 голосов
/ 16 августа 2011

Я использую это, чтобы получить список элементов и поместить их в список.URL также извлекается для каждого элемента.Я использую ListActivity

// Get all td's that are a child of a row - each game has 4 of these
        Elements games = doc.select("tr>  td.indexList1, tr > td.indexList2");
        Elements links = doc.getElementsByTag("a"); // or getElementsByClass("b1");


        // Iterator over those elements     
        ListIterator<Element> postIt = games.listIterator();          
        while (postIt.hasNext()) {     
            // ...It 

            while (postIt.hasNext()) {     
                // Add the game text to the ArrayList     
                Element name = postIt.next();
                String nameString = name.text();
                String platform = postIt.next().text();
                Element url = name.select("a").first();

            //Here i retreive the url string for each item
                        String urlString = url.attr("href");

                String genre = postIt.next().text();
                String releaseDate = postIt.next().text();
                gameList.add(new GameRelease(nameString, platform, genre, releaseDate, urlString));
                Log.v(TAG, urlString);
            }

            this.setListAdapter(new GameReleaseAdapter(this, gameList));
        }         

Я создал свой собственный ArrayAdapter здесь ...

private class GameReleaseAdapter extends ArrayAdapter<GameRelease> {

    private ArrayList<GameRelease> items;

    public GameReleaseAdapter(Context context,  ArrayList<GameRelease> items) {
        // TODO: make a layout for each item which you'd call (for example) itemLayout
        super(context, R.layout.item, items);
        this.items = items;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        // TODO: return an item view styled however you want or as shown in the tutorial
        View v = convertView;
        if (v == null) {
            LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            v = vi.inflate(R.layout.row, null);

    }
        GameRelease o = items.get(position);
        TextView tt = (TextView) v.findViewById(R.id.toptext);
        TextView bt = (TextView) v.findViewById(R.id.bottomtext);
        TextView plat = (TextView)v.findViewById(R.id.platform);
        TextView genre = (TextView)v.findViewById(R.id.genre);

        tt.setText(o.getName());
        bt.setText("RELEASE DATE: " +o.getReleaseDate());
        plat.setText("PLATFORM: " + o.getPlatform());
        genre.setText("GENRE: " + o.getGenre());

        return v;

}


}   

}

Как я могу сохранить URL для каждого элемента, чтобы, когдаэлемент нажимается URL-адрес отправляется с дополнительным к другой деятельности?Как я могу установить каждый элемент на свой собственный URL?Как я могу сообщить Android, что этот элемент в списке был выбран, и это должен быть Этот URL для этого конкретного элемента?

РЕДАКТИРОВАТЬ - Как это?Это дает мне тонны синтаксических ошибок

            while (postIt.hasNext()) {     
                // Add the game text to the ArrayList     
                Element name = postIt.next();
                String nameString = name.text();
                String platform = postIt.next().text();
                Element url = name.select("a").first();
                String urlString = url.attr("href");

                String genre = postIt.next().text();
                String releaseDate = postIt.next().text();
                gameList.add(new GameRelease(nameString, platform, genre, releaseDate, urlString));
                Log.v(TAG, urlString);
            }

            this.setListAdapter(new GameReleaseAdapter(this, gameList));
            final GameReleaseAdapter myGameReleaseAdapter =new GameReleaseAdapter(this,gameList);

            setOnItemClickListener(new OnItemClickListener() {

                @Override
                public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                    GameRelease  selectedGameRelease =myGameReleaseAdapter .getItem(position);
                    String urlString=selectedGameRelease.getUrlString();
                    //Make what you like with the url

                }
            });



        }         

1 Ответ

1 голос
/ 16 августа 2011

когда вы создаете GameReleaseAdapter в своем Activity, убедитесь, что у вас есть ссылка на него, например

в onCreate

1 - прочитайте ваш gameList

2- после прочтения выполните следующую строку:

final GameReleaseAdapter myGameReleaseAdapter =new GameReleaseAdapter(this,gameList);

3-

getListView.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                GameRelease  selectedGameRelease =myGameReleaseAdapter .getItem(position);
                String urlString=selectedGameRelease.getUrlString();
                //Make what you like with the url

            }
        });

OnItemClickListener можно найти с AdapterView.OnItemClickListener

...