需要在点击android上定位listview位置

时间:2014-11-25 16:04:12

标签: android

我遇到的情况是,我试图在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");

       }
   });

目前,当从列表视图中选择任何行时,第一行会根据需要设置文本。

如何在此中加入位置以确保正确的行显示我需要的文本?

谢谢!

5 个答案:

答案 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,它就能完美运行!