I have a ListActivity which is being filled via an internal class
"OrderAdapter" - while the list is being populated I set various
OnClickListeners on the TextView elements which should open the same
view with different parameter values per line. My problem I have is
that no matter which entry in the list I click I will always get to a
view with the same parameter ID (it's always the ID of the last line
in the list) - even though the output of the ID varies if I output it
to the TextView.

Here is the code of the internal class which populates the list in the
ListActivity:
[code]
        private class OrderAdapter extends ArrayAdapter<Cheat> {

                private ArrayList<Cheat> items;
                private Cheat cheat;

                public OrderAdapter(Context context, int textViewResourceId,
ArrayList<Cheat> items) {
                        super(context, textViewResourceId, items);
                        this.explicitIntent = new Intent[items.size()];
                        this.items = items;
                }

                public View getView(int position, View convertView, ViewGroup
parent) {
                        View v = convertView;
                        if (v == null) {
                                LayoutInflater vi = (LayoutInflater)
getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                                v = vi.inflate(R.layout.fulltext_search, null);
                        }

                        try {
                                cheat = items.get(position);
                                if (cheat != null) {

                                        TextView tvGameName = (TextView) 
v.findViewById(R.id.tvGameName);
                                        TextView tvSystem = (TextView) 
v.findViewById(R.id.tvSystem);
                                        TextView tvCheatTitle = (TextView)
v.findViewById(R.id.tvCheatTitle);
                                        TextView tvCheatText = (TextView)
v.findViewById(R.id.tvCheatText);

                                        if (tvGameName != null) {
                                                
tvGameName.setText(cheat.getGameName());
                                                
tvGameName.setOnClickListener(new OnClickListener() {

                                                        public void 
onClick(View v) {
                                                                Intent 
explicitIntent = new Intent(FulltextSearchResult.this,
CheatView.class);
                                                                
explicitIntent.putExtra("cheatId", cheat.getCheatId());
                                                                
explicitIntent.putExtra("cheatTitle", cheat.getCheatTitle());
                                                                
explicitIntent.putExtra("gameId", cheat.getGameId());
                                                                
explicitIntent.putExtra("gameName", cheat.getGameName());
                                                                
explicitIntent.putExtra("systemId", cheat.getSystemId());
                                                                
explicitIntent.putExtra("systemName", cheat.getSystemName());
                                                                
startActivity(explicitIntent);
                                                        }

                                                });
                                        }

                                        if (tvSystem != null) {
                                                tvSystem.setText("(" + 
cheat.getSystemName() + ")");
                                                tvSystem.setOnClickListener(new 
OnClickListener() {

                                                        public void 
onClick(View v) {
                                                                Intent 
explicitIntent = new Intent(FulltextSearchResult.this,
CheatView.class);
                                                                
explicitIntent.putExtra("cheatId", cheat.getCheatId());
                                                                
explicitIntent.putExtra("cheatTitle", cheat.getCheatTitle());
                                                                
explicitIntent.putExtra("gameId", cheat.getGameId());
                                                                
explicitIntent.putExtra("gameName", cheat.getGameName());
                                                                
explicitIntent.putExtra("systemId", cheat.getSystemId());
                                                                
explicitIntent.putExtra("systemName", cheat.getSystemName());
                                                                
startActivity(explicitIntent);
                                                        }

                                                });
                                        }

                                        if (tvCheatTitle != null) {
                                                String styledTitle = 
cheat.getCheatTitle();
                                                
tvCheatTitle.setText(Html.fromHtml(styledTitle),
TextView.BufferType.SPANNABLE);
                                                
tvCheatTitle.setOnClickListener(new OnClickListener() {

                                                        public void 
onClick(View v) {
                                                                Intent 
explicitIntent = new Intent(FulltextSearchResult.this,
CheatView.class);
                                                                
explicitIntent.putExtra("cheatId", cheat.getCheatId());
                                                                
explicitIntent.putExtra("cheatTitle", cheat.getCheatTitle());
                                                                
explicitIntent.putExtra("gameId", cheat.getGameId());
                                                                
explicitIntent.putExtra("gameName", cheat.getGameName());
                                                                
explicitIntent.putExtra("systemId", cheat.getSystemId());
                                                                
explicitIntent.putExtra("systemName", cheat.getSystemName());
                                                                
startActivity(explicitIntent);
                                                        }

                                                });
                                        }

                                        if (tvCheatText != null) {
                                                String styledText = 
cheat.getCheatText();
                                                styledText = 
styledText.replaceAll("</th><th>", " - ");
                                                styledText = 
styledText.replaceAll("</td><td>", " - ");
                                                styledText = 
styledText.replaceAll("</tr>", "<br>");

                                                
tvCheatText.setText(Html.fromHtml(styledText),
TextView.BufferType.SPANNABLE);
                                                
tvCheatText.setOnClickListener(new OnClickListener() {

                                                        public void 
onClick(View v) {
                                                                Intent 
explicitIntent = new Intent(FulltextSearchResult.this,
CheatView.class);
                                                                
explicitIntent.putExtra("cheatId", cheat.getCheatId());
                                                                
explicitIntent.putExtra("cheatTitle", cheat.getCheatTitle());
                                                                
explicitIntent.putExtra("gameId", cheat.getGameId());
                                                                
explicitIntent.putExtra("gameName", cheat.getGameName());
                                                                
explicitIntent.putExtra("systemId", cheat.getSystemId());
                                                                
explicitIntent.putExtra("systemName", cheat.getSystemName());
                                                                
startActivity(explicitIntent);
                                                        }

                                                });
                                        }

                                }

                        } catch (Exception e) {
                                Log.e("FulltextSearchResult.getView ERROR:", 
e.getMessage());
                        }
                        return v;
                }
        }
[/code]

Any ideas why it always opens the view with the same ID even though
the TextView "tvCheatTitle" displays a different value in every line?

Thanks a lot for help in advance!
Dominik

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to