2012-08-29 122 views
3

我有一个从textviews构建的列表视图。ListView更改文本的项目点击

如果用户点击一个项目列表,被点击项目的文本将被改变,我该怎么做?

我知道如何添加新项目,但改变其文本?我怎样才能做到这一点?

回答

5

你可以用AdapterView.OnItemClickListener来做到这一点。实施onItemClick(AdapterView<?> parent, View view, int position, long id)方法。该view你在这里经过时,被点击项目的TextView,所以应该够做

((TextView)view).setText("Hey, I've just been tapped on!"); 
+0

大,谢谢! – idish

7

首先,你需要添加一个OnItemClickListenerListView

mMyListView.setOnClickListener(new OnItemClickListener(
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
    } 
)); 

OnItemClickListener的方法onItemClick中有参数查看参数。它包含已被点击的ListView的行。

这一观点,你可以得到的TextView,然后更改文本:

public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
    TextView tv = (TextView) view.findViewById(R.id.your_text_view_id); 
    tv.setText(...); 
} 

如果您的ListView细胞只包含一个TextView,你可以放心地投视图直接进入一个TextView:

public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
    TextView tv = (TextView) view; 
    tv.setText(...); 
} 
2
mListView.setOnClickListener(new OnItemClickListener(
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
     TextView mTextView = (TextView) view; 
     mTextView.setText("TextView was Clicked"); 
    } 
)); 
0

那么如果你有一个简单的适配器,将工作:

mListView.setOnClickListener(new OnItemClickListener(
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
     TextView mTextView = (TextView) view; 
     mTextView.setText("TextView was Clicked"); 
    } 
)); 

但是,如果你有一个自定义视图你需要寻找查看更改文本:

mListView.setOnClickListener(new OnItemClickListener(
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
     //TextView mTextView = (TextView) view; 
     //mTextView.setText("TextView was Clicked"); 
     ((TextView)(view.findViewById(R.id.description))).setText(""TextView was Clicked"); 
    } 
));