在我的列表视图填充器中,我有一个图片和一个TextView。当用户选择列表视图中的任何项目时,我想增加TextView中文本的字体大小。我正在使用自定义适配器。我可以在getView方法中实现吗?并且也可以不总是调用notifydatasetchanged()来实现这个吗?
setTag()
和 getTag()
。@Override
public View getView(int position, View convertView, ViewGroup parent) {
convertView= getLayoutInflater().inflate(R.layout.layoutfile, null);
TextView mTextViewNumber= (TextView) convertView.findViewById(R.id.TvId);
ImageView mImageView= (ImageView) convertView.findViewById(R.id.ImgId)
mTextViewNumber.setText("Hi hello");
mImageView.setBackgroundResource(R.x.xxxx);
convertView.setTag(mTextViewNumber, R.id.TvId);
convertView.setTag(mImageView, R.id.ImgId);
return convertView;
}
通过 getTag() OnItemClickListener() 更改文本大小。
mListView=(ListView) findViewById(R.id.list_call_log_listview);
mListView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View view, int arg2,
long arg3) {
TextView mTextView= (TextView) view.getTag(R.id.TvId);
mTextView.setTextSize(20);
ImageView mImageView= (ImageView) view.getTag(R.id.ImgId);
mImageView.setBackgroundResource(R.x.xxxx);
}
});
我认为你可以在onItemClick方法中使用这个,它是一个相当简单的解决方案。
View v=myListView.getChildAt(position);
TextView tv=(TextView)v.findViewById(R.id.myTextView);
tv.setTextSize(...);
Holder
来完全控制ListView
中的元素,否则你将无法这样做。这个解决方案在编写上是最干净和正确的。 - Simon Dorociak