thanks for the hint.
I have changed the inner class and put the clicklistener for the inner
class as a whole - but I still have the same problem like before.

        private class OrderAdapter extends ArrayAdapter<Cheat> implements
OnClickListener {

                private ArrayList<Cheat> items;
                private Cheat cheat;

                public OrderAdapter(Context context, int textViewResourceId,
ArrayList<Cheat> items) {
                        super(context, textViewResourceId, items);
                        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(this);
                                        }

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

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

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

                                }

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

                public void onClick(View paramView) {
                        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);
                }
        }














On 2 Jun., 13:39, Mark Murphy <[email protected]> wrote:
> Dominik Erbsland wrote:
> > 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?
>
> Because you are not creating the actual Intent object until the TextView
> is clicked, at which point your "cheat" value is the last one shown.
>
> Also, why are you putting individual click listeners on individual
> TextViews, rather than having a click listener for the ListView as a whole?
>
> --
> Mark Murphy (a Commons 
> Guy)http://commonsware.com|http://github.com/commonsguyhttp://commonsware.com/blog|http://twitter.com/commonsguy
>
> Android Consulting:http://commonsware.com/consulting

-- 
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