我遇到的情况是,我试图在TextView
点击的某一行的ListView
内更改文字。
以下代码显示了我尝试执行此操作的方法:
answerList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
TextView selection = (TextView)view.findViewById(R.id.selection);
selection.setText("Selection");
}
});
目前,当从列表视图中选择任何行时,第一行会根据需要设置文本。
如何在此中加入位置以确保正确的行显示我需要的文本?
谢谢!
答案 0 :(得分:2)
:
public void onItemClick(AdapterView adapterView,View view,int i,long l)
int i给出了位置,你可以使用它。
答案 1 :(得分:0)
从onItemClick方法写入开关获取整数值,其中i为参数
答案 2 :(得分:0)
您可以使用AdapterView.OnItemClickListener执行此操作。实现onItemClick(AdapterView父,View视图,int位置,长id)方法。您在此处传递的视图是所单击项目的TextView,因此它应该足以执行
((TextView)view).setText(“嘿,我刚被点击!”);
答案 3 :(得分:0)
如果我理解你需要什么,那么你应该迭代onItemClick
内的对象列表,将用于设置文本视图的属性更改为每个元素的空字符串除了i元素,并致电notifyDataSetChanged()
答案 4 :(得分:0)
我不认为这是最真实的方式,但我这样做:
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
if (convertView == null)
{
convertView = inflater.inflate(R.layout.my_layout);
holder = new StoreHolder();
holder.tvData = (TextView) convertView.findViewById(R.id.my_data);
convertView.setTag(holder);
}
else
{
holder = (StoreHolder) convertView.getTag();
}
holder.tvData.setText("hello");
holder.tvData.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
//Do stuff specific to TextView of particular list row
}
});
return convertView;
}
class StoreHolder
{
TextView tvData;
}
只需在textView的getview方法中创建一个clickListener,它就能完美运行!