【问题标题】:Android ListView, retrieve specific element(View) from row with multiple elementsAndroid ListView,从具有多个元素的行中检索特定元素(视图)
【发布时间】:2013-07-30 22:37:23
【问题描述】:

是否可以从 ListView 内的一行中的 特定 TextView 元素中检索文本,其中每一行都包含其 自己的 Layout.xml 和 4 个不同的 TextView?一行看起来像 --> |文本视图 1 文本视图 2 文本视图 3 文本视图 4 |。我的 ListView 的行数取决于填充 ListView 的 SQLite 数据库的行数。例如:如果我点击第 1 行,我想要 this 行的 TextView1,如果我点击第 2 行,我想要 this 特定行的 TextView1。

希望你明白,英语不是我的母语。

【问题讨论】:

  • 因此,当您单击 TextView 的特定元素时,如果您的意思是这样,您需要执行“选择行文本”操作,然后我可以为您提供一些代码。

标签: android sqlite listview view


【解决方案1】:

我不确定我是否理解你,但我想你想在你的 ListView 中添加一个AdapterView.OnItemClickListener。实现这个只有一个方法的监听器:

onItemClick(AdapterView<?> parent, View view, int position, long id)

在您的情况下,view 将是用户单击的行,而 item 是该行在适配器中的位置。

要检索行的文本,首先您应该获取 TextView(如果您的视图是容器),其中包含类似

 TextView textView = (TextView) view.findViewById(R.id.your_textview_id);

然后调用textView.getText()检索文本

希望对你有帮助

【讨论】:

  • 哈维尔,非常感谢!我听从了你的建议,现在它就像一个魅力!
【解决方案2】:

如果您使用的是基于“BaseAdapter”的适配器,那么您需要为要在 getView() 方法中检索其内容的每个 TextView 添加一个 onClickListener:

private class ViewHolder 
{
    TextView Tv1;
    TextView Tv2;
}
public View getView(final int position, View convertView, ViewGroup parent) {

    ViewHolder holder;
    if (convertView==null)
    {
        holder=new ViewHolder();
        convertView = inflater.inflate(R.layout.yourXmlSource, null);
        holder.tv1 = (TextView)convertView.findViewById(R.id.tv1);
        holder.tv2 = (TextView)convertView.findViewById(R.id.tv2);
    }

    else
    {
        holder = (ViewHolder) convertView.getTag();
    }

//Code to fill your Rows from the database here


    holder.tv1.setOnClickListener(new OnClickListener() 
    {

        @Override
        public void onClick(View v) 
        {

        Toast toast = Toast.makeText(v.getConext(), (TextView)v, Toast.LENGTH_LONG);
toast.show();

        }
    });
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-30
    • 1970-01-01
    • 2011-09-27
    • 2010-12-15
    • 1970-01-01
    • 2021-07-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多